1 #include <math.h> 2 fabs(double x)3 double fabs(double x) 4 { 5 double t; 6 __asm__ ("pcmpeqd %0, %0" : "=x"(t)); // t = ~0 7 __asm__ ("psrlq $1, %0" : "+x"(t)); // t >>= 1 8 __asm__ ("andps %1, %0" : "+x"(x) : "x"(t)); // x &= t 9 return x; 10 } 11