当前位置: 首页>>代码示例>>C++>>正文


C++ ec_point::is_infinity方法代码示例

本文整理汇总了C++中ec_point::is_infinity方法的典型用法代码示例。如果您正苦于以下问题:C++ ec_point::is_infinity方法的具体用法?C++ ec_point::is_infinity怎么用?C++ ec_point::is_infinity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ec_point的用法示例。


在下文中一共展示了ec_point::is_infinity方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ec_point

//Сумма 2-х точек
//a4=A
//a6=B
//a1,a2,a3=0
ec_point ec_point::operator +(ec_point op2){
	ec_curve * ec_singleton = ec_curve::Instance();
	ZZ x3,y3,lambda,nu;
	//Обработка случаев, если среди операндов нуль группы
	if (is_infinity() && op2.is_infinity()) return ec_point(true);
	if (is_infinity()) return ec_point(op2.x,op2.y);
	if (op2.is_infinity()) return ec_point(x,y);

	//Нулей нет, дальше всё по Вейерштрассу
	if ((x==op2.x) && (y==NegateMod(op2.y,ec_singleton->p))) {
		//Если две противоположные точки, результатом будет нуль группы
		return ec_point(true);
		}
	else {
		if (x!=op2.x) { //Если сладываем две разные точки
			lambda = (((op2.y-y)%ec_singleton->p) * InvMod((op2.x-x)%ec_singleton->p,ec_singleton->p))%ec_singleton->p;
			}
		else { //Если удваиваем точку
			lambda = ((3*x*x+ec_singleton->A)%ec_singleton->p * InvMod((2*y)%ec_singleton->p,ec_singleton->p))%ec_singleton->p;
			}
		x3 = (lambda*lambda - x - op2.x)%ec_singleton->p;
		y3 = (lambda*(x-x3)-y)%ec_singleton->p;
		return ec_point(x3,y3);
		}
	}
开发者ID:dtbinh,项目名称:discrete_log,代码行数:29,代码来源:ec_point.cpp

示例2: ec_compare_bs

//Функция для использования в бинарном поиске
//Считает одинаковыми точку и обратную ей ( x-координаты совпадают)
//Порядок задаётся сравнением x-координаты точек
//Нуль группы считается меньше любой точки
int ec_compare_bs(ec_point ec1, ec_point ec2) {
	if (!ec1.is_infinity() && !ec2.is_infinity()) {
		if (ec1.x>ec2.x) return 1;
		else if (ec1.x<ec2.x) return -1;
		else if (ec1.x==ec2.x) {
			return 0;
			}
		}
	else if (ec1.is_infinity() && ec2.is_infinity())
		return 0;
	else if (ec1.is_infinity() && !ec2.is_infinity())
		return -1;
	else if (!ec1.is_infinity() && ec2.is_infinity())
		return 1;

	}
开发者ID:dtbinh,项目名称:discrete_log,代码行数:20,代码来源:ec_point.cpp


注:本文中的ec_point::is_infinity方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。