mirror of
				https://github.com/DanilaFe/abacus
				synced 2025-11-03 18:33:41 -08:00 
			
		
		
		
	Modify exp to use the non-alternating series and take a reciprocal in the case of a negative argument.
This commit is contained in:
		
							parent
							
								
									7b7f9936e4
								
							
						
					
					
						commit
						b9c928d66f
					
				@ -303,14 +303,9 @@ public class StandardPlugin extends Plugin {
 | 
			
		||||
        protected NumberInterface applyInternal(NumberInterface[] params) {
 | 
			
		||||
            NumberInterface maxError = params[0].getMaxError();
 | 
			
		||||
            int n = 0;
 | 
			
		||||
            if (params[0].signum() <= 0) {
 | 
			
		||||
                NumberInterface currentTerm = NaiveNumber.ONE.promoteTo(params[0].getClass()), sum = currentTerm;
 | 
			
		||||
                while (FUNCTION_ABS.apply(currentTerm).compareTo(maxError) > 0) {
 | 
			
		||||
                    n++;
 | 
			
		||||
                    currentTerm = currentTerm.multiply(params[0]).divide((new NaiveNumber(n)).promoteTo(params[0].getClass()));
 | 
			
		||||
                    sum = sum.add(currentTerm);
 | 
			
		||||
                }
 | 
			
		||||
                return sum;
 | 
			
		||||
            if (params[0].signum() < 0) {
 | 
			
		||||
                NumberInterface[] negatedParams = {params[0].negate()};
 | 
			
		||||
               return fromInt(params[0].getClass(), 1).divide(applyInternal(negatedParams));
 | 
			
		||||
            } else {
 | 
			
		||||
                //We need n such that x^(n+1) * 3^ceil(x) <= maxError * (n+1)!.
 | 
			
		||||
                //right and left refer to lhs and rhs in the above inequality.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user