code: public function _calcSize(&$raList)
      {
          // Calculate Basic Setting
          list($iSBDcnt, $iBBcnt, $iPPScnt) = [0, 0, 0];
          $iSmallLen = 0;
          $iSBcnt = 0;
          $iCount = count($raList);
          for ($i = 0; $i < $iCount; ++$i) {
              if ($raList[$i]->Type == OLE::OLE_PPS_TYPE_FILE) {
                  $raList[$i]->Size = $raList[$i]->getDataLen();
                  if ($raList[$i]->Size < OLE::OLE_DATA_SIZE_SMALL) {
                      $iSBcnt += floor($raList[$i]->Size / $this->smallBlockSize)
                                    + (($raList[$i]->Size % $this->smallBlockSize) ? 1 : 0);
                  } else {
                      $iBBcnt += (floor($raList[$i]->Size / $this->bigBlockSize) +
                          (($raList[$i]->Size % $this->bigBlockSize) ? 1 : 0));
                  }
              }
          }
          $iSmallLen = $iSBcnt * $this->smallBlockSize;
          $iSlCnt = floor($this->bigBlockSize / OLE::OLE_LONG_INT_SIZE);
          $iSBDcnt = floor($iSBcnt / $iSlCnt) + (($iSBcnt % $iSlCnt) ? 1 : 0);
          $iBBcnt += (floor($iSmallLen / $this->bigBlockSize) +
                        (($iSmallLen % $this->bigBlockSize) ? 1 : 0));
          $iCnt = count($raList);
          $iBdCnt = $this->bigBlockSize / OLE::OLE_PPS_SIZE;
          $iPPScnt = (floor($iCnt / $iBdCnt) + (($iCnt % $iBdCnt) ? 1 : 0));
  
          return [$iSBDcnt, $iBBcnt, $iPPScnt];
      }
docs: Calculate some numbers.
  
  @param array $raList Reference to an array of PPS's
  
  @return float[] The array of numbers