in src/gowrapper/ckks/params.go [100:132]
func lattigo_newParametersFromLogModuli(logN uint64, logQi *C.constUChar, numQi uint8, logPi *C.constUChar, numPi uint8, logScale uint8) Handle6 {
size := unsafe.Sizeof(uint8(0))
LogQi := make([]int, numQi)
qiPtr := uintptr(unsafe.Pointer(logQi))
for i := range LogQi {
LogQi[i] = int(*(*uint8)(unsafe.Pointer(qiPtr + size*uintptr(i))))
}
LogPi := make([]int, numPi)
piPtr := uintptr(unsafe.Pointer(logPi))
for i := range LogPi {
LogPi[i] = int(*(*uint8)(unsafe.Pointer(piPtr + size*uintptr(i))))
}
var paramsLit ckks.ParametersLiteral
paramsLit = ckks.ParametersLiteral{
LogN: int(logN),
LogQ: LogQi,
LogP: LogPi,
Sigma: rlwe.DefaultSigma,
LogSlots: int(logN) - 1,
Scale: float64(uint64(1) << uint64(logScale)),
}
var params ckks.Parameters
var err error
params, err = ckks.NewParametersFromLiteral(paramsLit)
if err != nil {
panic(err)
}
return marshal.CrossLangObjMap.Add(unsafe.Pointer(¶ms))
}