Benchmark: Savage

+- HP Forums (http://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: HP Prime Software Library (/forum-15.html)
+--- Thread: Benchmark: Savage (/thread-9626.html)



Benchmark: Savage - StephenG1CMZ - 12-03-2017 05:40 PM

An implementation of the Savage benchmark, in PPL and CAS:


RE: Benchmark: Savage - StephenG1CMZ - 12-05-2017 04:51 PM

Version 0.2

Code:


 //Benchmark: Savage 
 //PPL V0.2 

 //OMITTED: "RAD" in the original
 LOCAL AA;

 EXPORT A_SavagePPL()
 BEGIN
  LOCAL AA;
  AA:=1;
  FOR I FROM 1 TO 2499 DO
    AA:=TAN(ATAN(EXP(LN(√(AA*AA)))))+1
  END;
  RETURN AA;
 END;

 MLFOR ()
 BEGIN
  //LOCAL AA;
  RETURN AA:=TAN(ATAN(EXP(LN(√(AA*AA)))))+1;
 END;
 
 EXPORT A_SavageMAKE()
 BEGIN
  //LOCAL AA;
  AA:=1;
  MAKELIST(MLFOR(),AA,1,2499);
  RETURN AA;
 END;

#CAS
 A_SavageCAS1(f):=
 BEGIN
  LOCAL aa;
  aa:=1;
  FOR I FROM 1 TO 2499 DO
    aa:=TAN(ATAN(EXP(LN(√(aa*aa)))))+1
  END;
  RETURN (aa);
 END;
#END

 A_SavageCAS2()
 BEGIN
  LOCAL aa;
  aa:=1;
  FOR I FROM 1 TO 2499 DO
    aa:=CAS(TAN(ATAN(EXP(LN(√(aa*aa))))))+1;
  END;
  RETURN (aa);
 END;

 RRR(RR)
 //REPORT RESULT,RELATIVE ERROR
 BEGIN
  RETURN {RR,((2500-RR)/2500)};
 END;

 //APPROX:
 //I FIND NO CLEAR WINNER BETWEEN PPL AND MAKE.
 //EXACT:
 //I FIND CAS2 CONSISTENTLY FASTER THAN CAS1

 EXPORT SAVAGE()
 BEGIN
  LOCAL RR;
  PRINT();
  PRINT("Savage Benchmark");
  PRINT({" PPL1: ",TEVAL(RR:=A_SavagePPL()),RRR(RR)});
  PRINT({" MAKE: ",TEVAL(RR:=A_SavageMAKE()),RRR(RR)});
 
  PRINT({" CAS1: ",TEVAL(RR:=A_SavageCAS1("")),RRR(RR)});
  PRINT({" CAS2: ",TEVAL(RR:=A_SavageCAS2()),RRR(RR)});
  
 END;