.\" Copyright 2026 Andrew V.Kosteltsev (kx@radix-linux.su) .\" .\" .TH ipow_mod 3 "September 14, 2026" "libmpu" "LibMPU Programmer's Manual" .SH NAME \fBipow_mod\fP \- модульное возведение беззнакового целого числа в степень .SH SYNOPSIS .nf .B #include .PP .BI "void ipow_mod( mpu_int *" c ", mpu_int *" a ", mpu_int *" e ", mpu_int *" m ", int " nb " );" .fi .SH DESCRIPTION Функция \fBipow_mod()\fP выполняет операцию модульного возведения в степень .sp .nf c = (a ^ e) mod m .fi .sp и размещает результат по адресу \fBc\fP. Показатель степени, расположенный по адресу \fBe\fP, рассматривается как беззнаковое целое число. Содержимое памяти по адресам \fBa\fP, \fBe\fP и \fBm\fP не изменяется. Параметр \fBnb\fP определяет размер всех операндов в байтах. .PP При нулевом показателе степени результат равен \fB1 mod m\fP; следовательно, при \fBe == 0\fP и \fBm == 1\fP результат равен нулю. .PP Если \fBm\fP равно нулю, значение по адресу \fBc\fP не изменяется, выставляется флаг \fBV\fP (Invalid operation), а переменной \fB__mpu_integer_error_no\fP присваивается значение \fB__I_ENUMBER__\fP. .PP Перед выполнением операции целочисленные флаги очищаются. Арифметические флаги могут изменяться внутренними модульными операциями; при нулевом модуле выставляется флаг \fBV\fP. .sp .SH EXAMPLES .nf .sp #include #include int main( void ) { mpu_int1024_t c, a, e, m; int nb = NB_I1024; __mpu_char8_t s[4096]; __mpu_init(); iatoui( a, "4", nb ); iatoui( e, "13", nb ); iatoui( m, "251", nb ); ipow_mod( c, a, e, m, nb ); iuitoa( s, c, RADIX_DEC, LOWERCASE, nb ); printf( "c = %s;\\n", s ); /* c = 249; */ __mpu_free_context(); return( 0 ); } .fi .sp .SH SEE ALSO .BR iadd(3), .BR isub(3), .BR iadc(3), .BR isbb(3), .BR ineg(3), .BR inot(3), .BR iand(3), .BR itest(3), .BR icmp(3), .BR ior(3), .BR ixor(3), .BR iinc(3), .BR idec(3), .BR ixchg(3), .BR icpy(3), .BR icvt(3), .BR imul(3), .BR ismul(3), .BR idiv(3), .BR isdiv(3), .BR iatoi(3), .BR iatoui(3), .BR iitoa(3), .BR iuitoa(3), .BR _int_digs(3), .BR ibits_len(3), .BR igcd(3), .BR ilcm(3), .BR imod(3), .BR imul_mod(3), .BR ipowm1_mod(3), .BR shifts(3), .BR shifts\-n(3), .BR circular\-shifts(3), .BR circular\-shifts\-n(3), .BR integer\-flags(3), .BR real\-flags(3), .BR libmpu(7).