blob: 94df00616a6e65e0d47d14a69d00d16082a67955 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
/*
* ecgen, tool for generating Elliptic curve domain parameters
* Copyright (C) 2017-2018 J08nY
*/
/**
* @file subgroup.h
*/
#ifndef ECGEN_MATH_SUBGROUPS_H
#define ECGEN_MATH_SUBGROUPS_H
#include <pari/pari.h>
#include "misc/types.h"
/**
* @brief
* @return
*/
subgroup_t *subgroup_new(void);
/**
* @brief
* @param src
* @param dst
* @return
*/
subgroup_t *subgroup_copy(const subgroup_t *src, subgroup_t *dst);
/**
* @brief
* @param src
* @return
*/
subgroup_t *subgroup_new_copy(const subgroup_t *src);
/**
* @brief
* @param src
* @param dst
* @return
*/
subgroup_t *subgroup_clone(const subgroup_t *src, subgroup_t *dst);
/**
* @brief
* @param src
* @return
*/
subgroup_t *subgroup_new_clone(const subgroup_t *src);
/**
* @brief
* @param subgroup
*/
void subgroup_free(subgroup_t **subgroup);
/**
* @brief
* @param subgroup
*/
void subgroup_free_deep(subgroup_t **subgroup);
/**
* @brief
* @param num
* @return
*/
subgroup_t **subgroups_new(size_t num);
/**
*
* @param src
* @param dest
* @param num
* @return
*/
subgroup_t **subgroups_copy(subgroup_t **src, subgroup_t **dest, size_t num);
/**
*
* @param src
* @param num
* @return
*/
subgroup_t **subgroups_new_copy(subgroup_t **src, size_t num);
/**
*
* @param src
* @param dest
* @param num
* @return
*/
subgroup_t **subgroups_clone(subgroup_t **src, subgroup_t **dest, size_t num);
/**
*
* @param src
* @param num
* @return
*/
subgroup_t **subgroups_new_clone(subgroup_t **src, size_t num);
/**
* @brief
* @param subgroups
*/
void subgroups_free(subgroup_t ***subgroups);
/**
* @brief
* @param subgroups
* @param num
*/
void subgroups_free_deep(subgroup_t ***subgroups, size_t num);
/**
* @brief All prime factors of a given integer, without multipliticity.
*
* subgroups_factors(27) = [3]
* @param order
* @return a t_VEC of prime factors.
*/
GEN subgroups_prime(GEN order);
/**
* @brief All nonprime subgroup orders of a given integer.
* @param order
* @return a t_VEC of nonprime factors.
*/
GEN subgroups_nonprime(GEN order);
/**
* @brief All all subgroup orders of a given integer.
* @param order
* @return a t_VEC of all factors.
*/
GEN subgroups_all(GEN order);
#endif // ECGEN_MATH_SUBGROUPS_H
|