Your IP : 216.73.216.240


Current Path : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/
Upload File :
Current File : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/TNumeric.php

<?php
/*
* @package		Tech Fry Library
* @license		https://www.gnu.org/licenses/gpl-3.0.en.html
*/

namespace TechFry\Library;

defined('_JEXEC') or die;

class TNumeric
{
    public $number; // Number or array of numbers
    
    public function __construct($number = '')
    {
        $this->number = $number;
    }

    public function set_number($number)
    {
        $this->number = $number;
    }

    public function process($function, $param = null)
    {
        switch ($function)
        {
            // One argument - number
            case 'abs' :
            case 'base_convert' :
            case 'bindec' :
            case 'ceil' :
            case 'decbin' :
            case 'dechex' :
            case 'decoct' :
            case 'deg2rad' :
            case 'exp' :
            case 'floor' :
            case 'hexdec' :
            case 'log' :
            case 'log10' :
            case 'octdec' :
            case 'rad2deg' :
            case 'round' :
            case 'sqrt' :
                $result = $this->one($function);
                break;
                
            // Two arguments - number, 1 parameter
            case 'fmod' :
            case 'intdiv' :
            case 'pow' :
            case 'rand' :
            case 'mt_rand' :
            case 'number_format' :
                $result = $this->two($function, $param);
                break;
            
            // Array as argument
            case 'max' :
            case 'min' :
            case 'array_sum' :
            case 'array_product' :
            case 'count' :
                $result = $function($this->number);
                break;
                
            // Arithmetic custom methods - 2 numbers
            case 'sum' :
            case 'add' :
            case 'subtract' : 
            case 'multiply' :
            case 'divide' :
            case 'mod' :
            case 'exp' :
                $result = $this->arithmetic($function, $param);
        }
        
        return $result;
    }
    
    public function one($function)
    {
        if (\is_array($this->number))
        {
            foreach ($this->number as $k => $num)
            {
                $this->number[$k] = $function($num);
            }
        }
        else
        {
            $this->number = $function($this->number);
        }
        
        return $this->number;
    }
    
    public function two($function, $param)
    {
        if (\is_array($this->number))
        {
            foreach ($this->number as $k => $num)
            {
                $this->number[$k] = $function($num, $param);
            }
        }
        else
        {
            $this->number = $function($this->number, $param);
        }
        
        return $this->number;
    }
    
    public function arithmetic($function, $param = '')
    {
        if (\is_array($this->number))
        {
            $num1 = $this->number[0];
            $num2 = $this->number[1];
        }
        else
        {
            $num1 = $this->number;
            $num2 = $param;
        }
        
        switch ($function)
        {
            case 'add' :
            case 'sum' :
                $result = $num1 + $num2;
                break;
            
            case 'multiply' :
                $result = $num1 * $num2;
                break;
                
            case 'subtract' :
                $result = $num1 - $num2;
                break;
                
            case 'divide' :
                $result = $num1 / $num2;
                break;
                
            case 'mod' :
                $result = $num1 % $num2;
                break;
                
            case 'exp' :
                $result = $num1 ** $num2;
                break;
        }
        
        return $result;
    }
}