2016 Update

This commit is contained in:
Tina Müller 2016-12-05 22:15:40 +01:00
parent 948b86eafa
commit dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions

View file

@ -0,0 +1,10 @@
function agm(a0, g0) {
var an = (a0 + g0) / 2,
gn = Math.sqrt(a0 * g0);
while (Math.abs(an - gn) > tolerance) {
an = (an + gn) / 2, gn = Math.sqrt(an * gn)
}
return an;
}
agm(1, 1 / Math.sqrt(2));

View file

@ -0,0 +1,43 @@
(() => {
'use strict';
// ARITHMETIC-GEOMETRIC MEAN
// agm :: Num a => a -> a -> a
let agm = (a, g) => {
let abs = Math.abs,
sqrt = Math.sqrt;
return until(
m => abs(m.an - m.gn) < tolerance,
m => {
return {
an: (m.an + m.gn) / 2,
gn: sqrt(m.an * m.gn)
};
}, {
an: (a + g) / 2,
gn: sqrt(a * g)
}
)
.an;
},
// GENERIC
// until :: (a -> Bool) -> (a -> a) -> a -> a
until = (p, f, x) => {
let v = x;
while (!p(v)) v = f(v);
return v;
};
// TEST
let tolerance = 0.000001;
return agm(1, 1 / Math.sqrt(2));
})();

View file

@ -0,0 +1 @@
0.8472130848351929

View file

@ -1,9 +0,0 @@
function agm(a0,g0){
var an=(a0+g0)/2,gn=Math.sqrt(a0*g0);
while(Math.abs(an-gn)>tolerance){
an=(an+gn)/2,gn=Math.sqrt(an*gn)
}
return an;
}
agm(1,1/Math.sqrt(2));