@@ -998,51 +998,37 @@ <h4 style="font-size:160%;margin:7px">Trigonometry</h4>
998998}
999999
10001000function Asin ( x ) {
1001- if ( typeof x !== 'number' || isNaN ( x ) || x <= 0 || x > 1 ) return null ;
1001+ if ( typeof x !== 'number' || x <= 0 || x > 1 ) return null ;
10021002
1003- let radian = null ;
1004-
1005- if ( x > 0.706 || x < 0.09 ) {
1006- // Direct match
1003+ if ( x >= 0.707 ) {
10071004 const match = closestValue ( x , 'sin' ) ;
1008- if ( ! match ?. angle ) return null ;
1009- const parsed = match . angle . match ( / r a d \( ( [ \d . ] + ) \) / ) ;
1010- if ( ! parsed ) return null ;
1011- radian = parseFloat ( parsed [ 1 ] ) ;
1012- } else {
1013- // Reflective zone
1014- const match = closestValue ( x , 'cos' ) ;
1015- if ( ! match ?. angle ) return null ;
1016- const parsed = match . angle . match ( / r a d \( ( [ \d . ] + ) \) / ) ;
1005+ const parsed = match ?. angle . match ( / r a d \\ ( ( [ \d . ] + ) \\ ) / ) ;
10171006 if ( ! parsed ) return null ;
1018- radian = parseFloat ( parsed [ 1 ] ) ;
1007+ return parseFloat ( parsed [ 1 ] ) ;
10191008 }
10201009
1021- return radian ;
1010+ // No reflection — match via cosine
1011+ const match = closestValue ( x , 'cos' ) ;
1012+ const parsed = match ?. angle . match ( / r a d \\ ( ( [ \d . ] + ) \\ ) / ) ;
1013+ if ( ! parsed ) return null ;
1014+ return parseFloat ( parsed [ 1 ] ) ;
10221015}
10231016
10241017function Acos ( x ) {
1025- if ( typeof x !== 'number' || isNaN ( x ) || x <= 0 || x > 1 ) return null ;
1018+ if ( typeof x !== 'number' || x <= 0 || x > 1 ) return null ;
10261019
1027- let radian = null ;
1028-
1029- if ( x < 0.707 || x > 0.995 ) {
1030- // Direct match
1020+ if ( x >= 0.707 ) {
10311021 const match = closestValue ( x , 'cos' ) ;
1032- if ( ! match ?. angle ) return null ;
1033- const parsed = match . angle . match ( / r a d \( ( [ \d . ] + ) \) / ) ;
1034- if ( ! parsed ) return null ;
1035- radian = parseFloat ( parsed [ 1 ] ) ;
1036- } else {
1037- // Reflective zone
1038- const match = closestValue ( x , 'sin' ) ;
1039- if ( ! match ?. angle ) return null ;
1040- const parsed = match . angle . match ( / r a d \( ( [ \d . ] + ) \) / ) ;
1022+ const parsed = match ?. angle . match ( / r a d \\ ( ( [ \d . ] + ) \\ ) / ) ;
10411023 if ( ! parsed ) return null ;
1042- radian = parseFloat ( parsed [ 1 ] ) ;
1024+ return parseFloat ( parsed [ 1 ] ) ;
10431025 }
10441026
1045- return radian ;
1027+ // No reflection — match via cosine
1028+ const match = closestValue ( x , 'sin' ) ;
1029+ const parsed = match ?. angle . match ( / r a d \\ ( ( [ \d . ] + ) \\ ) / ) ;
1030+ if ( ! parsed ) return null ;
1031+ return parseFloat ( parsed [ 1 ] ) ;
10461032}
10471033
10481034function Atan ( x ) {
0 commit comments