blob: 2c02ff2d2c35b04813a8f2674b395831c8c47857 [file] [log] [blame] [edit]
// RUN: %clang -std=c11 -ffast-math -O0 %s -S -emit-llvm -o - -g | %opt - %loadEnzyme -enzyme -S | %lli -
// RUN: %clang -std=c11 -ffast-math -O1 %s -S -emit-llvm -o - -g | %opt - %loadEnzyme -enzyme -S | %lli -
// RUN: %clang -std=c11 -ffast-math -O2 %s -S -emit-llvm -o - -g | %opt - %loadEnzyme -enzyme -S | %lli -
// RUN: %clang -std=c11 -ffast-math -O3 %s -S -emit-llvm -o - -g | %opt - %loadEnzyme -enzyme -S | %lli -
// RUN: %clang -std=c11 -ffast-math -O0 %s -S -emit-llvm -o - -g | %opt - %loadEnzyme -enzyme -enzyme-inline=1 -S | %lli -
// RUN: %clang -std=c11 -ffast-math -O1 %s -S -emit-llvm -o - -g | %opt - %loadEnzyme -enzyme -enzyme-inline=1 -S | %lli -
// RUN: %clang -std=c11 -ffast-math -O2 %s -S -emit-llvm -o - -g | %opt - %loadEnzyme -enzyme -enzyme-inline=1 -S | %lli -
// RUN: %clang -std=c11 -ffast-math -O3 %s -S -emit-llvm -o - -g | %opt - %loadEnzyme -enzyme -enzyme-inline=1 -S | %lli -
//#include <math.h>
#include "test_utils.h"
#define __builtin_autodiff __enzyme_autodiff
double __enzyme_autodiff(void*, double, unsigned);
static double taylorlog(double x, unsigned SINCOSN) {
double sum = 0;
for(int i=1; i<=SINCOSN; i++) {
sum += __builtin_pow(x, i);
}
return sum;
}
int main(int argc, char** argv) {
double ret = __builtin_autodiff(taylorlog, 0.5, 10000);
APPROX_EQ(ret, 4.0, 1e-7);
return 0;
}