- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将一个用 Fortran 编写并使用列主排序的算法转换为使用行主排序的 C。该算法使用 gemv blas 调用。
我改变了在 cblas 界面中对行主要布局的调用:
但该算法的行为并不相同。我得到不同的结果。我创建了一个显示行为的最小样本。
#include <stdio.h>
void dgemv_( const char * t, const int * m, const int * n, const double * alpha, const double * A, const int *lda, const double * X, const int * incx,
const double * beta, double * Y, const int *incy );
int main()
{
const int M = 2, N = 2;
const int one = 1;
const double alpha = -1.0, beta = 1.0;
const char trans = 'T';
const char noTrans = 'N';
double Yc[4] = { 0x1.42c7bd3b6266cp+4, 0x1.6c6ff393729dp+4, 0x1.acee1f3938c0bp-2, 0x1.b0cd5ba440d93p+0 };
double Yr[4] = { 0x1.42c7bd3b6266cp+4, 0x1.acee1f3938c0bp-2, 0x1.6c6ff393729dp+4, 0x1.b0cd5ba440d93p+0 };
double A[2] = { 0x1.11acee560242ap-2, 0x1p+0 };
double Bc[2] = { 0x1.8p+2, 0x1.cp+2 };
double Br[2] = { 0x1.8p+2, 0x1.cp+2 };
dgemv_( &noTrans, &M, &N, &alpha, Yc, &M, A, &one, &beta, Bc, &one );
printf("Result Column Major\n");
printf("%a %a\n", Bc[0], Bc[1]);
dgemv_( &trans, &N, &M, &alpha, Yr, &N, A, &one, &beta, Br, &one );
printf("Result Row Major\n");
printf("%a %a\n", Br[0], Br[1]);
}
我使用格式字符串 %a 来获取值的十六进制表示来比较它们。使用列主要版本的结果 vector 如下所示:
0x1.8402515a17beap-3 -0x1.8e67415bce3aep-1
虽然一个连续的专业看起来像这样:
0x1.8402515a17bep-3 -0x1.8e67415bce3bp-1
这如何解释以及可以做些什么来使算法工作相同?
最佳答案
如果结果用十进制表示比较
double x = 0x1.8402515a17beap-3, y = 0x1.8402515a17bep-3;
printf( "%40.30f\n", x );
printf( "%40.30f\n", y );
printf( "%40.30f\n", x - y );
他们同意最多 15 个有效数字
0.189457545816338168709336287066
0.189457545816337891153580130776
0.000000000000000277555756156289
因此对于使用 double
进行 double 计算来说,差异似乎足够小。至于-0x1.8e67415bce3aep-1
和-0x1.8e67415bce3bp-1
,差值也在1.0e-15以下。
-0.778131525475250773737911913486
-0.778131525475250995782516838517
0.000000000000000222044604925031
为了获得更好的一致性,可能需要四倍(或更高)精度。
关于c - 从列专业转移到行专业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31007672/
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我需要创建一个 API,允许我客户的开发人员使用将作为库发布的专有 C 模块(想想 .lib 或 .so - - 不是来源)。 我想让 header 尽可能对开发人员友好(所以我不需要这样做),遵循最
所以我想制作一个加载了全部功能的免费应用程序。在应用程序检测到许可的专业版 key 之前,专业版功能将被禁用。当然,我想让专业 key 使用 LVL 检查它的许可证。虽然到目前为止我知道如何做正确的事
我想就最小/样板专业 PHP 团队开发环境获得普遍共识。我无法在网络上的任何地方找到此信息。在开源世界中,有如此多的选择和如此多的做事方式,但我还没有找到任何适用于基础设施/管道方面的通用最佳实践。
希望我的问题不会太宽泛。因此,我尝试构建我的问题,以免对 this question 的问题得到太相似的答案。 . 目前我已经在 Linode 上部署了我的 rails 应用程序。服务很好,价格合理。
只是一般查询。我试图研究用于专业 360 开发的工具和环境,但 NDA 未涵盖的可用工具和环境并不多。 (请注意,我对 XNA 开发不感兴趣。) 问:PRO 开发的首选/最常见的开发环境是什么?是 V
我收到了 Rob Bovey 写的《Professional Excel Development》一书,它让我大开眼界。 我正在通过错误处理重新调整我的代码。然而,还有很多我不明白的地方。我特别需要知
IDE:Delphi 6 Professional。 我们有大项目。 我无法使用项目组来构建所有这些,因为我在执行此操作时遇到了 OM 错误和奇怪的文件错误。 我的想法是使用 DCC32.exe之前我
Microsoft网站具有冲突的信息: http://msdn.microsoft.com/en-us/library/ms182372.aspx ...使用Visual Studio Premium
所以我刚刚开始从头开始构建一个网站。我以前从未这样做过。我正在服务器上工作。 1。问题: 在我的文件index.php 中,我有以下内容: 效果很好,显示了 Start.html 的内容。在 htm
例如,在javascript中:1 var name = ""; alert("The name is: " + name); 或者2 alert("The name is: "); 在 ht
我是一名优秀的程序员,十分优秀!