Check Machin-like formulas: Difference between revisions

Content added Content deleted
(Go solution)
(+J (note: I developed & posted this solution entirely on my iPad, so it may have some display issues).)
Line 188: Line 188:
putStr "\nnot Machin: "; print not_machin
putStr "\nnot Machin: "; print not_machin
print (tans not_machin)</lang>
print (tans not_machin)</lang>


=={{header|J}}==
'''Solution''':<lang j> machin =: 1r4p1 = [: +/ ({. * _3 o. %/@:}.)"1@:x:</lang>
'''Example''':<lang j> R =: <@:(0&".);._2 ];._2 noun define
  1  1     2
  1  1     3
------------
  2  1     3
  1  1     7
------------
  4  1     5
 _1  1   239
------------
  5  1     7
  2  3    79
------------
  5 29   278
  7  3    79
------------
  1  1     2
  1  1     5
  1  1     8
------------
  4  1     5
 _1  1    70
  1  1    99
------------
  5  1     7
  4  1    53
  2  1  4443
------------
  6  1     8
  2  1    57
  1  1   239
------------
  8  1    10
 _1  1   239
 _4  1   515
------------
 12  1    18
  8  1    57
 _5  1   239
------------
 16  1    21
  3  1   239
  4  3  1042
------------
 22  1    28
  2  1   443
 _5  1  1393
_10  1 11018
------------
 22  1    38
 17  7   601
 10  7  8149
------------
 44  1    57
  7  1   239
_12  1   682
 24  1 12943
------------
 88  1   172
 51  1   239
 32  1   682
 44  1  5357
 68  1 12943
------------
)

   machin&> R
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</lang>
'''Notes''': The function <tt>machin</tt> compares the results of each formula to π/4 (expressed as <tt>1r4p1</tt> in J's numeric notation). The last expression above shows the results of these comparisons for each formula (with 1 for true and 0 for false). In J, arctan is expressed as <tt>3 o. ''values''</tt> and the function <tt>x:</tt> coerces values to extended precision; J maintains this precision as far as possible.


=={{header|OCaml}}==
=={{header|OCaml}}==