/*----- Header files ------------------------------------------------------*/
#include <mLib/dstr.h>
+#include <mLib/macros.h>
#include "grand.h"
#include "mp.h"
/*----- Main code ---------------------------------------------------------*/
+/* Oh, just shut up. */
+CLANG_WARNING("-Wempty-body")
+
/* --- @strongprime_setup@ --- *
*
* Arguments: @const char *name@ = pointer to name root
rabin_iters(nb), pgen_test, &rb)) == 0)
goto fail_t;
- /* --- Choose a suitable value for %$r = 2it + 1$% for some %$i$% --- */
+ /* --- Choose a suitable value for %$r = 2it + 1$% for some %$i$% --- *
+ *
+ * Then %$r \equiv 1 \pmod{t}$%, i.e., %$r - 1$% is a multiple of %$t$%.
+ */
rr = mp_lsl(rr, t, 1);
pfilt_create(&c.f, rr);
/* --- Select a suitable congruence class for %$p$% --- *
*
- * This computes %$p_0 = 2 s (s^{r - 2} \bmod r) - 1$%.
+ * This computes %$p_0 = 2 s (s^{-1} \bmod r) - 1$%. Then %$p_0 + 1$% is
+ * clearly a multiple of %$s$%, and
+ *
+ * %$p_0 - 1 \equiv 2 s s^{-1} - 2 \equiv 0 \pmod{r}$%
+ *
+ * is a multiple of %$r$%.
*/
rr = mp_modinv(rr, s, q);