小编Mar*_*ark的帖子

按值返回内联函数

我正在实现一些数学类型,我想优化运算符以最小化创建,销毁和复制的内存量.为了演示我将向您展示我的Quaternion实现的一部分.

class Quaternion
{
public:
    double w,x,y,z;

    ...

    Quaternion  operator+(const Quaternion &other) const;
}
Run Code Online (Sandbox Code Playgroud)

我想知道以下两个实现如何不同.我有一个+ =实现,可以在没有创建内存的情况下就地操作,但是一些使用四元数的高级操作对于使用+而不是+ =很有用.

__forceinline Quaternion Quaternion::operator+( const Quaternion &other ) const
{
    return Quaternion(w+other.w,x+other.x,y+other.y,z+other.z);
}
Run Code Online (Sandbox Code Playgroud)

__forceinline Quaternion Quaternion::operator+( const Quaternion &other ) const
{
    Quaternion q(w+other.w,x+other.x,y+other.y,z+other.z);
    return q;
}
Run Code Online (Sandbox Code Playgroud)

我的c ++完全是自学成才的,所以当谈到一些优化时,我不确定该怎么做,因为我不确切知道编译器如何处理这些事情.这些机制如何转换为非内联实现.

欢迎对我的代码提出任何其他批评.

c++ memory optimization inline

7
推荐指数
2
解决办法
3753
查看次数

GPU上的高精度数学

我对使用HLSL在GPU上实现算法感兴趣,但我主要担心的一个问题是我想要一个可变级别的精度.是否存在可以在GPU上实现64位精度和更高精度的技术.

谢谢!

math precision gpu gpgpu

7
推荐指数
2
解决办法
4466
查看次数

最小二乘最小化复数

我一直在使用我的Matlab,但我的愿景是最终切换到用Python完成所有分析,因为它是一种实际的编程语言和其他一些原因.

我一直试图解决的最近问题是对复杂数据进行最小二乘最小化.我是一名工程师,我们经常处理复杂的阻抗,我正在尝试使用曲线拟合将简单的电路模型拟合到测量数据中.

阻抗方程如下:

Z(w)= 1 /(1/R + j*w*C)+ j*w*L.

然后我试图找到R,C和L的值,以便找到最小二乘曲线.

我已经尝试使用优化包,例如optimize.curve_fit或optimize.leastsq,但它们不适用于复数.

然后我尝试使我的残差函数返回复杂数据的大小,但这也不起作用.

python numpy curve-fitting scipy least-squares

6
推荐指数
2
解决办法
4188
查看次数