|
| 1 | +--TEST-- |
| 2 | +GH-10271: Incorrect arithmetic calculations when using JIT |
| 3 | +--INI-- |
| 4 | +opcache.enable=1 |
| 5 | +opcache.enable_cli=1 |
| 6 | +opcache.file_update_protection=0 |
| 7 | +opcache.jit_buffer_size=1M |
| 8 | +opcache.jit_hot_loop=1 |
| 9 | +--FILE-- |
| 10 | +<?php |
| 11 | +$tang['KSI']=-9.1751656444142E-5; |
| 12 | +$tang['ETA']=8.5076090069491E-5; |
| 13 | + |
| 14 | +$sol['X']['k']=-222.45470924306; |
| 15 | +$sol['X']['e']=-8.1787760034414; |
| 16 | +$sol['X'][1]=-0.020231298698539; |
| 17 | + |
| 18 | +$sol['Y']['k']=-14.400586941152; |
| 19 | +$sol['Y']['e']=392.95090925357; |
| 20 | +$sol['Y'][1]=-0.035664413413272; |
| 21 | + |
| 22 | +$sol['xc']=968; |
| 23 | +$sol['yc']=548; |
| 24 | + |
| 25 | +for( $p=0; $p<3; $p++ ) |
| 26 | +{ |
| 27 | + print($p.': '); |
| 28 | + Tangential2XY($tang,$sol); |
| 29 | +} |
| 30 | + |
| 31 | +function Tangential2XY(array $tang, array $sol) : array |
| 32 | +{ |
| 33 | + $x = $sol['X']['k']*$tang['KSI'] + $sol['X']['e']*$tang['ETA'] + $sol['X'][1]; |
| 34 | + $y = $sol['Y']['k']*$tang['KSI'] + $sol['Y']['e']*$tang['ETA'] + $sol['Y'][1]; |
| 35 | + printf("In;%.12f;%.12f;%.12f;%.12f;",$x,$y,$sol['xc'],$sol['yc']); |
| 36 | + $x = $sol['xc']*($x+1); |
| 37 | + $y = $sol['yc']*($y+1); |
| 38 | + printf("Out;%.12f;%.12f\n",$x,$y); |
| 39 | + if( $x<100 ) |
| 40 | + exit("Mamy to!\n"); |
| 41 | + return ['x'=>$x,'y'=>$y]; |
| 42 | +} |
| 43 | +?> |
| 44 | +--EXPECT-- |
| 45 | +0: In;-0.000516528926;-0.000912408759;968.000000000000;548.000000000000;Out;967.500000000004;547.500000000009 |
| 46 | +1: In;-0.000516528926;-0.000912408759;968.000000000000;548.000000000000;Out;967.500000000004;547.500000000009 |
| 47 | +2: In;-0.000516528926;-0.000912408759;968.000000000000;548.000000000000;Out;967.500000000004;547.500000000009 |
0 commit comments