18/09/16 23:54:13.85 SOVIz+sV.net
で、>>200に書いてあるとおり↓Debugビルドと同じ結果が再現された
> ↓この下に(ループ内に)fprintf文を入れるだけで
> ReleaseビルドとDebugビルドが同じ実行結果になることが確認できた
> norm += (double)r[i] * (double)r[i];
③-2 デフォルト設定(Release) 【コード】(その1)
#include "stdafx.h"
#include <stdio.h>
#include <stdint.h>
#include <math.h>
using namespace System;
template<typename T> static double calc_norm_and_regulate(int num, T* r, bool regulate){ // <float> for debug.
double norm = 0;
for (int i = 0; i < num; i++) {
norm += (double)r[i] * (double)r[i];
fprintf(stdout, "[0]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm);
}
fprintf(stdout, "[1]0x%016llX:%.19lg\n", *(uint64_t*)&norm, norm);
norm = sqrt(norm);
if (regulate)
for (int i=0;i<num;i++)
r[i] = (T)(r[i]/norm);
return norm;
}