<commit_before>/*
 * errfloat.h
 *
 *  Created on: 2016年11月15日
 *      Author: zhuqian
 *
 * 这个文件维护一个ErrFloat类，是PBRTV3中的EFloat类的功能，这里把名字改成ErrFloat让类名更加明确意义
 * 然后PBRTV3的书籍上的实现与其代码中的实现也有一定的差异
 */

#ifndef SRC_CORE_ERRFLOAT_H_
#define SRC_CORE_ERRFLOAT_H_

#include "raiden.h"

class ErrFloat{
private:
	float _value;//浮点数round后的值
	//float _error;//浮点数的绝对误差(real值减去round值)
	float _high;//round值加上绝对error后的值
	float _low;//round值减去绝对error后的值
#ifdef DEBUG_BUILD
	double _highPrecisionValue;//调试模式下需要计算的高精度的值
#endif
public:
	ErrFloat(){}
	ErrFloat(float,float err=0.0f);
	ErrFloat operator+(ErrFloat) const;
	float UpperBound() const{return _high;}
	float LowerBound() const{return _low;}
	//Check函数是内敛函数，然后内部的实现只在DEBUG_BUILD模式有用
	//所以编译后如果不是DB模式，不会产生额外的代码
	inline void Check() const{
#ifdef DEBUG_BUILD
		//todo 对数据的检查
#endif
	}
};


<commit_msg>add explicit float() and double() to ErrFloat<commit_after>/*
 * errfloat.h
 *
 *  Created on: 2016年11月15日
 *      Author: zhuqian
 *
 * 这个文件维护一个ErrFloat类，是PBRTV3中的EFloat类的功能，这里把名字改成ErrFloat让类名更加明确意义
 * 然后PBRTV3的书籍上的实现与其代码中的实现也有一定的差异
 */

#ifndef SRC_CORE_ERRFLOAT_H_
#define SRC_CORE_ERRFLOAT_H_

#include "raiden.h"

class ErrFloat{
private:
	float _value;//浮点数round后的值
	//float _error;//浮点数的绝对误差(real值减去round值)
	float _high;//round值加上绝对error后的值
	float _low;//round值减去绝对error后的值
#ifdef DEBUG_BUILD
	double _highPrecisionValue;//调试模式下需要计算的高精度的值
#endif
public:
	ErrFloat(){}
	ErrFloat(float,float err=0.0f);
	ErrFloat operator+(ErrFloat) const;

	//强制转换成float
	explicit operator float() const{
		return _value;
	}

	explicit operator double() const{
		return _value;
	}

	float UpperBound() const{return _high;}
	float LowerBound() const{return _low;}
	//Check函数是内敛函数，然后内部的实现只在DEBUG_BUILD模式有用
	//所以编译后如果不是DB模式，不会产生额外的代码
	inline void Check() const{
#ifdef DEBUG_BUILD
		//todo 对数据的检查
#endif
	}
};



{'fraction_non_alphanumeric': 0.10554951033732318, 'fraction_numerical': 0.013057671381936888, 'mean_word_length': 5.43006993006993, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6301830', 'n_tokens_mistral': 922, 'n_tokens_neox': 950, 'n_words': 133}