OpenCL学习笔记(17)--比较函数、指数函数和对数函数

1.比较函数:OpenCL有些函数所返回的是两个浮点数中的较大值,有些函数返回的则是较小值。其余的函数则根据阈值参数来限制或平滑数据输入。比较函数:
(1)float clamp(floatn x, float/n min,float/n max)–返回如果x<min,就返回min;如果x>max,就返回max,否则返回x;
(2)float fdim(floatn x,floatn y)–如果x>y,就返回x-y,如果x<=y,就返回0;(3)floatn fmax(floatn x,float/n y)–如果x>=y,就返回x,如果y>x,就返回y;
(4)floatn max(floatn x, float/n y)–如果x>=y,就返回x,如果y>x,就返回y;
(5)floatn mix(floatn x,floatn y,float/n a)–使用公式x+(y-x)*a对x和y之间的数插值,其中0.0<a<1.0;
(6)floatn maxmag(floatn x, floatn y)–如果|x|>=|y|就返回x;如果|y|>|x|,就返回y;
(7)floatn step(float/n edge,floatn x)–如果x<edge,就返回0.0,如果x>=edge,就返回1.0;
(8)floatn smoothstep(float/n edge1,float/n edge2,floatn x)–如果x<=edge0,就返回0.0;如果x>=edge,就返回1.0;如果edge0<x<edge1,使用平滑插值。
函数clamp和smoothstep函数却值得一提,两个函数都是拿向量输入和阈值上下限(以标量或向量的形式来设定)作比较。如果输入的向量分量比阈值上限大,函数clamp将输出分量限为最大值,而函数smoothstep将输出分量设为1.0.如果输入的向量分量比阈值下限小,则函数clamp将输出分两限为最小值,而函数smoothstep将输出分量设为0.0。如果输入的向量分量居于两者之间,函数smoothstep将用HERmitian插值法来进行插值处理。

2.指数函数和对数函数:
(1)floatn pow(floatn x,floatn y)–xy
(2)floatn pown(floatn x, intn y)–xy,其中y是整数
(3)floatn powr(floatn x, floatn y)–xy,其中x大于等于0
(4)floatn exp/expm1(floatn x)–ex和ex-1
(5)floatn exp2/exp10(floatn x)–2x和10x
(6)floatn ldexp(floatn x,intn n)–x2n
(7)floatn rootn(floatn x, floatn y)–x1/y
(8)floatn sqrt/cbrt(floatn x)–x的平方根和立方根
(9)floatn rsqrt(floatn x)-- x的平方根之一
(10)floatn log/log1p(floatn x)–ln(x)和ln(1.0+x)
(11)floatn log2/log10(floatn x)–log2x和log10x
(12)floatn logb(floatn x)–log2x的整数部分
(13)floatn erf/erfc(floatn x)–误差函数和误差函数的补
(14)floatn tgamma/lgamma(floatn x)–gamma函数和对数gamma函数
(15)floatn lgamma_r(floatn x,_(g|l|p)intn
mem)–对数gamma函数,并将符号放在mem指向的内存中。

函数expm1(exp-1)返回的是ex-1的计算结果,而函数exp10返回的是10*的计算结果。同样,log1p返回的是ln(1.0+x)的计算结果,而函数log10返回的是log10X的计算结果。

发布了19 篇原创文章 · 获赞 20 · 访问量 561

猜你喜欢

转载自blog.csdn.net/INFINALGEORGE/article/details/105202570