mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 02:19:22 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			483 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			483 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
var
 | 
						|
  d0,d1,d2,d3 : double;
 | 
						|
  s0,s1,s2,s3 : single;
 | 
						|
 | 
						|
procedure testsingle;
 | 
						|
  var
 | 
						|
    l0,l1,l2,l3 : single;
 | 
						|
  begin
 | 
						|
    l1:=2;
 | 
						|
    l2:=3;
 | 
						|
    l3:=4;
 | 
						|
    s0:=0;
 | 
						|
 | 
						|
    l0:=FMASingle(l1,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1+1.0,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>13.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,l1+1.0,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,s2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,l2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,s2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,l2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,s2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    { first operand negative }
 | 
						|
    l0:=FMASingle(-l1,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-(l1+1.0),l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-5.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-l1,l1+1.0,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-s1,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-l1,s2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-l1,l2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-s1,s2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-s1,l2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-l1,s2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    { second operand negative }
 | 
						|
    l0:=FMASingle(l1,-l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1+1.0,-l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-5.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,-(l1+1.0),l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,-l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,-s2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,-l2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,-s2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,-l2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,-s2,s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    { third operand negative }
 | 
						|
    l0:=FMASingle(l1,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1+1.0,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>5.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,l1+1.0,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,s2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,l2,-s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,s2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(s1,l2,-s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(l1,s2,-s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    { first and third operand negative }
 | 
						|
    l0:=FMASingle(-l1,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-(l1+1.0),l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-13.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-l1,l1+1.0,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-s1,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-l1,s2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-l1,l2,-s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-s1,s2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-s1,l2,-s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMASingle(-l1,s2,-s3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
  end;
 | 
						|
 | 
						|
 | 
						|
procedure testdouble;
 | 
						|
  var
 | 
						|
    l0,l1,l2,l3 : double;
 | 
						|
  begin
 | 
						|
    l1:=2;
 | 
						|
    l2:=3;
 | 
						|
    l3:=4;
 | 
						|
    d0:=0;
 | 
						|
 | 
						|
    l0:=FMADouble(l1,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1+1.0,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>13.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,l1+1.0,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,d2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,l2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,d2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,l2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,d2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    { first operand negative }
 | 
						|
    l0:=FMADouble(-l1,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-(l1+1.0),l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-5.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-l1,l1+1.0,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-d1,l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-l1,d2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-l1,l2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-d1,d2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-d1,l2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-l1,d2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    { second operand negative }
 | 
						|
    l0:=FMADouble(l1,-l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1+1.0,-l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-5.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,-(l1+1.0),l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,-l2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,-d2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,-l2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,-d2,l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,-l2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,-d2,d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    { third operand negative }
 | 
						|
    l0:=FMADouble(l1,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1+1.0,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>5.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,l1+1.0,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,d2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,l2,-d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,d2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(d1,l2,-d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(l1,d2,-d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>2.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    { first and third operand negative }
 | 
						|
    l0:=FMADouble(-l1,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-(l1+1.0),l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-13.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-l1,l1+1.0,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-d1,l2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-l1,d2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-l1,l2,-d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-d1,d2,-l3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-d1,l2,-d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
 | 
						|
    l0:=FMADouble(-l1,d2,-d3);
 | 
						|
    writeln(l0);
 | 
						|
    if l0<>-10.0 then
 | 
						|
      halt(1);
 | 
						|
  end;
 |