Я делаю реализацию с фиксированной точкой, и я запускаю тест, и я пытаюсь проверить точность моих операций с фиксированной точкой с точностью операций из заголовка cmath.
так вот мой код в test.cpp
#include <fixed_point_header.h>
#include <stdio.h>int main()
{
float fp1 = 3.14159;
float fp2 = 4.1723;
float fp3,fp4,fp5,fp6;
fp3 = fp1+fp2;
fp4 = fp1-fp2;
fp5 = fp1*fp2;
fp6 = fp1/fp2;
printf("float fixed point summation data ==%f\n",fp3);
printf("float fixed point difference data ==%f\n",fp4);
printf("float fixed point multiplied data ==%f\n",fp5);
printf("float fixed point divided data ==%f\n",fp6);
}
приведенный выше код протестирован нормально, но теперь мне нужно вычислить те же операции и увидеть результаты из заголовка cmath в том же файле test.cpp. Итак, как мне продолжить, возможно ли это с двумя пространствами имен (одно пространство имен моего заголовочного файла, одно пространство имен std)?
лайк
#include <fixed_point_header.h>
#include <stdio.h>
#include <math.h>
using namespace fp;int main() {
...// do the fixedpoint operations here
}
using namespace std;
int main() {
...// do the cmath operations here
}
Возможно ли, как приведенный выше код, может кто-нибудь помочь, как с этим работать.
Спасибо
Ответ на основе ваших комментариев:
Содержимое fixed_point_header.h:
namespace fp // This places your function inside the fp namespace
{
float pow(float base, float exp)
{
return 0; // Replace with your algorithm
}
}
Исходный файл:
#include <iostream>
#include <cmath>
#include "fixed_point_header.h"
int main()
{
float f1 = 2.0;
float f2 = 3.0;
std::cout << pow(f1, f2) << std::endl; // from cmath
std::cout << fp::pow(f1, f2) << std::endl; // from your header
return 0;
}
Выход:
8
0
Других решений пока нет …