-
Notifications
You must be signed in to change notification settings - Fork 2
/
Floating.java
46 lines (35 loc) · 1 KB
/
Floating.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package prelude;
public abstract class Floating<A> {
public final Fractional<A> fractional;
public Floating(Fractional<A> fractional) {
this.fractional = fractional;
}
public abstract A pi();
public abstract A exp(A x);
public abstract A log(A x);
public A sqrt(A x) {
return pow(x, fractional.divide(fractional.num.fromInteger(1), fractional.num.fromInteger(2)));
}
public A pow(A x, A y) {
return exp(fractional.num.multiply(log(x), y));
}
public A logBase(A x, A y) {
return fractional.divide(log(y), log(x));
}
public abstract A sin(A x);
public abstract A cos(A x);
public A tan(A x) {
return fractional.divide(sin(x), cos(x));
}
public abstract A asin(A x);
public abstract A acos(A x);
public abstract A atan(A x);
public abstract A sinh(A x);
public abstract A cosh(A x);
public A tanh(A x) {
return fractional.divide(sin(x), cos(x));
}
public abstract A asinh(A x);
public abstract A acosh(A x);
public abstract A atanh(A x);
}