Open
Description
src/binfhe/include/rgsw-cryptoparameters.h: in RingGSWCryptoParams() instead of "if ((method == LMKCDEY) & (numAutoKeys == 0))" there should be "if ((method == LMKCDEY) && (numAutoKeys == 0))"src/pke/lib/encoding/packedencoding.cpp: bool PackedEncoding::Encode(): "size_t i;" is declared twice outside of the loop in this function. Should not be outside the corresponding loopsAdd
#include "math/hal/basicint.h" // for MAX_MODULUS_SIZE
to constants.h and remove
#include "math/math-hal.h"
#include "lattice/constants-lattice.h"
Add #include "lattice/constants-lattice.h" to rlwe-cryptoparameters.hReplace "DCRTPoly" with "Element" in multiple files and discuss the changes with a scientist. Examples:
src/pke/include/schemebase/base-parametergeneration.h
src/pke/include/schemebase/base-leveledshe.h
src/pke/include/schemebase/base-scheme.h
src/pke/lib/schemebase/base-leveledshe.cppMake ParamsGenBGVRNS(), ParamsGenCKKSRNS() and ParamsGenBFVRNS() non-virtual in base-scheme.h.utils/exception.h: make all get functions const for OpenFHEExceptionRemove _MAKE_UNIQUE and make_unique from src/core/include/utils/memory.h and remove includes of memory.h where they are not needed- FindInVector() is defined in 2 different classes: DiscreteGaussianGeneratorImpl and in BaseSampler. The function return values differ by 1.
- Add "std::" to ceil(), floor(), log2(), pow(), sqrt() etc.
- src/pke/include/scheme/ckksrns/ckksrns-fhe.h: - Make both m_paramsEnc and m_paramsDec in CKKSBootstrapPrecom std::vector<uint32_t>. The current type is std::vector<int32_t>.
- Make all data members of class CKKSBootstrapPrecom private
- Change the name COMPRESSION_LEVEL (constants.h) to Camel case
- Add either NOT_SET or INVALID_VALUE to all enums in constants.h
See if we can replace the__builtin_*()
functions with__FILE__, __LINE__ and __FUNCTION__
in OpenFHEException as the functions are available with gcc only - This can not be done as the macros are replaced with information from exception.h by the preprocessor at compile time.- Remove the return value (eval_key_map) from EvalSumRowsKeyGen()/EvalSumColsKeyGen() and the EvalKey parameter from EvalSumRows()/EvalSumCols()
- Serialize/Deserialize functions should be "void" instead of returning true/false. Errors should be handled with exceptions
- Check if SerializeToFile() and SerializeToString() can be removed from src/pke/include/cryptocontext-ser.h, so the functions from src/core/include/utils/serial.h could be directly used
- Remove PublicKey from the parameter list #645
- Mark MATHBACKEND=2 deprecated #678
- Mark classes from "utils/exception.h" deprecated, so we can remove OPENFHE_THROW_OLD along with them. Is ThreadException used at all? #680
- Some suggestions #800
- Remove OPENFHE_THROW_OLD and all old exception types
Rename the function member PrintValue() to GetFormattedValues() and move it simple implementation to PlaintextImpl "precision". Use it in operator<<(). The function should be overloaded in CKKSPackedEncoding only. Also check doprint(), PrintParameters() and print() (in src/pke/include/metadata.h). GetFormattedValues() should stay public in case someone needs to change the precision (like in openfhe-python).- Replace sharingScheme types "additive" and "shamir" with enums
- Get rid of "int"
- Add a check for nullptr after "dynamic_pointer_cast"
- src/pke/lib/scheme/ckksrns/ckksrns-cryptoparameters.cpp: simplify the logic involving "if" statements with "COMPOSITESCALING..." in PrecomputeCRTTables()
- src/pke/lib/scheme/ckksrns/ckksrns-parametergeneration.cpp: simplify the "if" statement to call CompositePrimeModuliGen/SinglePrimeModuliGen
- Total cleanup for src/pke/lib/scheme/ckksrns/ckksrns-parametergeneration.cpp in Composite Prime Moduli Sampling and Scaling Factor Calculations (#910 phase 2) #929
- Move all *Core() and *CoreInPlace() functions to the protected/private class sections. Function examples: EvalMultCoreInPlace()
- Remove "this->" for class data members. If a data member is available in the base class only, then the scope resolution operator should be used
- Do not call getters from the function members of the same class, use data members directly
- Move some data to Plaintext from its derived classes and update Plaintext's constructors
- Add the "m_" prefix to all class data members
- Check input parameters on the cryptocontext.h, ciphertext.h and plaintext.h level. All other pke code should not validate input parameters.
- cryptocontext.h: refactor MakePlaintext(), especially the part where "Plaintext p" is created.
- Functions should not return const references to integer types or const integers eg, const NativeInteger& or const NativeInteger.
- Get rid of "#define PROFILE" in those files where it is not needed
- src/pke/include/scheme/ckksrns/gen-cryptocontext-ckksrns-internal.h: move all prameter validations to src/pke/lib/scheme/gen-cryptocontext-params-validation.cpp
- src/pke/lib/scheme/ckksrns/ckksrns-leveledshe.cpp:void LeveledSHECKKSRNS::EvalMultCoreInPlace(): combine both loops and thus get rid of 2 temporary vectors (cvRe and cvIm)
- Review all instances of the OPENFHE_THROW macro and get rid of unnecessarily created std::string for their error messages.
- Remove "enum" from function return types. It's not recommended to have it
- Move all data from the unittest source files to *.csv
- Create serialization helper functions in the private section of the class as some save/load have became too long. example: src/pke/include/schemebase/rlwe-cryptoparameters.h
DISCUSS with Yuriy and Carlo how we use ConstCiphertext (and all other Const.. aliases) and what they should exactly mean