1
0
mirror of https://github.com/DanilaFe/abacus synced 2024-12-23 07:50:09 -08:00

Modify precision of NaiveNumber. Fix factorial to work with 0./a.exe Add function to get nth term of the exp Maclaurin series.

This commit is contained in:
Arthur Drobot 2017-07-26 11:05:12 -07:00
parent ce2373be8e
commit 42cedf7c43
2 changed files with 16 additions and 1 deletions

View File

@ -29,7 +29,7 @@ public class NaiveNumber implements NumberInterface {
@Override @Override
public int precision() { public int precision() {
return 4; return 10;
} }
@Override @Override

15
src/org/nwapw/abacus/plugin/StandardPlugin.java Normal file → Executable file
View File

@ -80,6 +80,9 @@ public class StandardPlugin extends Plugin {
@Override @Override
protected NumberInterface applyInternal(NumberInterface[] params) { protected NumberInterface applyInternal(NumberInterface[] params) {
if(params[0].signum() == 0){
return (new NaiveNumber(1)).promoteTo(params[0].getClass());
}
NumberInterface factorial = params[0]; NumberInterface factorial = params[0];
NumberInterface multiplier = params[0]; NumberInterface multiplier = params[0];
//It is necessary to later prevent calls of factorial on anything but non-negative integers. //It is necessary to later prevent calls of factorial on anything but non-negative integers.
@ -89,6 +92,18 @@ public class StandardPlugin extends Plugin {
return factorial; return factorial;
} }
}); });
System.out.println(getExpSeriesTerm(4, new NaiveNumber(3)));
}
/**
* Returns the nth term of the Taylor series (centered at 0) of e^x
* @param n the term required (n >= 0).
* @param x the real number at which the series is evaluated.
* @return
*/
private NumberInterface getExpSeriesTerm(int n, NumberInterface x){
return x.intPow(n).divide(this.getFunction("!").apply((new NaiveNumber(n)).promoteTo(x.getClass())));
} }
} }