Skip to content

Incorrect arithmetic calculations when using JIT #10195

Closed as not planned
Closed as not planned
@GajowyJ

Description

@GajowyJ

Description

The problem is hard to reproduce because it depends on the code previously executed in an incomprehensible way. I have a function like below:

<?php
function Tangential2XY($tang,$sol)
{
	print("=>Tangential2XY\n");
	var_dump($tang,$sol);
	$x = $sol['X']['k']*$tang['KSI'] + $sol['X']['e']*$tang['ETA'] + $sol['X'][1];
	$y = $sol['Y']['k']*$tang['KSI'] + $sol['Y']['e']*$tang['ETA'] + $sol['Y'][1];
	$x = $sol['xc']*($x+1);
	$y = $sol['yc']*($y+1);
	var_dump($x,$y);
	return ['x'=>$x,'y'=>$y];
}

For exactly the same input data I got different results, depending on the previous operations executed. Switching off JIT (opcache.enable_cli=0) producess correct results.

Resulted (sometimes) in this output:

=>Tangential2XY
array(2) {
  ["KSI"]=>
  float(-0.0001819685080039859)
  ["ETA"]=>
  float(8.862282985990099E-5)
}
array(8) {
  ["X"]=>
  array(3) {
    ["k"]=>
    float(-222.47396149883136)
    ["e"]=>
    float(-8.132167973459502)
    [1]=>
    float(-0.033852713544306225)
  }
  ["Y"]=>
  array(3) {
    ["k"]=>
    float(-14.389222777371765)
    ["e"]=>
    float(393.0672227450047)
    [1]=>
    float(-0.034318122126483344)
  }
  ["rRA0"]=>
  float(1.0777157410495175)
  ["cosDEC0"]=>
  float(0.5485071919403858)
  ["sinDEC0"]=>
  float(0.8361458367950371)
  ["xc"]=>
  int(968)
  ["yc"]=>
  int(548)
  ["spp"]=>
  float(0.957071427611752)
}
float(1.0059098455606683)
float(1.0031349928784863)

But I expected this output instead:

=>Tangential2XY
array(2) {
  ["KSI"]=>
  float(-0.0001819685080039859)
  ["ETA"]=>
  float(8.862282985990099E-5)
}
array(8) {
  ["X"]=>
  array(3) {
    ["k"]=>
    float(-222.47396149883136)
    ["e"]=>
    float(-8.132167973459502)
    [1]=>
    float(-0.033852713544306225)
  }
  ["Y"]=>
  array(3) {
    ["k"]=>
    float(-14.389222777371765)
    ["e"]=>
    float(393.0672227450047)
    [1]=>
    float(-0.034318122126483344)
  }
  ["rRA0"]=>
  float(1.0777157410495175)
  ["cosDEC0"]=>
  float(0.5485071919403858)
  ["sinDEC0"]=>
  float(0.8361458367950371)
  ["xc"]=>
  int(968)
  ["yc"]=>
  int(548)
  ["spp"]=>
  float(0.957071427611752)
}
float(973.720730502727)
float(549.7179760974104)

PHP Version

PHP 8.0.26

Operating System

Windows 10

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions