Skip to main content
added 101 characters in body
Source Link
Shieru Asakoto
  • 6.5k
  • 19
  • 44

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

Has a precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical range is n<63 because of stack overflow.

###Shorter (82 bytes), no worries about stack overflow, but far fewer precision

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")

###Much shorter (80 bytes), larger range until stack overflow (n<172), but same precision as the 82-byte.

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):n--?(I=Z,F(B)):I)(B=I=10n**n)

If arbitrary precision is not the main point, then 25 bytes:

F=n=>n?Math.cos(F(n-1)):1

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

Has a precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical range is n<63 because of stack overflow.

###Shorter (82 bytes), no worries about stack overflow, but far fewer precision

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")

###Much shorter (80 bytes), larger range until stack overflow (n<172), but same precision as the 82-byte.

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):n--?(I=Z,F(B)):I)(B=I=10n**n)

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

Has a precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical range is n<63 because of stack overflow.

###Shorter (82 bytes), no worries about stack overflow, but far fewer precision

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")

###Much shorter (80 bytes), larger range until stack overflow (n<172), but same precision as the 82-byte.

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):n--?(I=Z,F(B)):I)(B=I=10n**n)

If arbitrary precision is not the main point, then 25 bytes:

F=n=>n?Math.cos(F(n-1)):1
added 199 characters in body
Source Link
Shieru Asakoto
  • 6.5k
  • 19
  • 44

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

PrecisionHas a precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical upper limitrange is n=62n<63 because of stack overflow.

###Shorter (82 bytes), no worries about stack overflow, but far fewer precision (82 bytes)

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")

###Much shorter (80 bytes), larger range until stack overflow (n<172), but same precision as the 82-byte.

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):n--?(I=Z,F(B)):I)(B=I=10n**n)

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

Precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical upper limit is n=62 because of stack overflow.

###Shorter, no worries about stack overflow, but far fewer precision (82 bytes)

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

Has a precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical range is n<63 because of stack overflow.

###Shorter (82 bytes), no worries about stack overflow, but far fewer precision

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")

###Much shorter (80 bytes), larger range until stack overflow (n<172), but same precision as the 82-byte.

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):n--?(I=Z,F(B)):I)(B=I=10n**n)
added 173 characters in body
Source Link
Shieru Asakoto
  • 6.5k
  • 19
  • 44

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

Precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical upper limit is n=62 because of stack overflow.

###Shorter, no worries about stack overflow, but far fewer precision (82 bytes)

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

Precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical upper limit is n=62 because of stack overflow.

JavaScript (Node.js), 84 bytes

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

Try it online!

Precision of roughly n-1 digits. BigInt is used and cos(x) is calculated using its Taylor expansion. The I-Z>>2n part is used only to prevent looping forever (with a cost of 4 bytes and some precision). Although theoretical applicable for arbitrary precision, practical upper limit is n=62 because of stack overflow.

###Shorter, no worries about stack overflow, but far fewer precision (82 bytes)

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")
Source Link
Shieru Asakoto
  • 6.5k
  • 19
  • 44
Loading