diff --git a/.gitignore b/.gitignore index 45aefba0e..e757292b9 100644 --- a/.gitignore +++ b/.gitignore @@ -32,5 +32,8 @@ web-test-runner/ node_modules/ package-lock.json +# Python .env +.env + # Dir used for backward compatibility test data tests/tfhe-backward-compat-data/ diff --git a/Makefile b/Makefile index 67ed394e5..00e92b441 100644 --- a/Makefile +++ b/Makefile @@ -363,7 +363,18 @@ clippy_rustdoc: install_rs_check_toolchain fi && \ CLIPPYFLAGS="-D warnings" RUSTDOCFLAGS="--no-run --nocapture --test-builder ./scripts/clippy_driver.sh -Z unstable-options" \ cargo "$(CARGO_RS_CHECK_TOOLCHAIN)" test --doc \ - --features=boolean,shortint,integer,zk-pok,pbs-stats,strings \ + --features=boolean,shortint,integer,zk-pok,pbs-stats,strings,experimental \ + -p $(TFHE_SPEC) + +.PHONY: clippy_rustdoc_gpu # Run clippy lints on doctests enabling the boolean, shortint, integer and zk-pok +clippy_rustdoc_gpu: install_rs_check_toolchain + if [[ "$(OS)" != "Linux" ]]; then \ + echo "WARNING: skipped clippy_rustdoc_gpu, unsupported OS $(OS)"; \ + exit 0; \ + fi && \ + CLIPPYFLAGS="-D warnings" RUSTDOCFLAGS="--no-run --nocapture --test-builder ./scripts/clippy_driver.sh -Z unstable-options" \ + cargo "$(CARGO_RS_CHECK_TOOLCHAIN)" test --doc \ + --features=boolean,shortint,integer,zk-pok,pbs-stats,strings,experimental,gpu \ -p $(TFHE_SPEC) .PHONY: clippy_c_api # Run clippy lints enabling the boolean, shortint and the C API @@ -956,6 +967,10 @@ check_intra_md_links: install_mlc check_md_links: install_mlc mlc --match-file-extension tfhe/docs +.PHONY: check_parameter_export_ok # Checks exported "current" shortint parameter module is correct +check_parameter_export_ok: + python3 ./scripts/check_current_param_export.py + .PHONY: check_compile_tests # Build tests in debug without running them check_compile_tests: install_rs_build_toolchain RUSTFLAGS="$(RUSTFLAGS)" cargo $(CARGO_RS_BUILD_TOOLCHAIN) test --no-run \ @@ -1281,7 +1296,7 @@ parse_wasm_benchmarks: install_rs_check_toolchain .PHONY: write_params_to_file # Gather all crypto parameters into a file with a Sage readable format. write_params_to_file: install_rs_check_toolchain - RUSTFLAGS="$(RUSTFLAGS)" cargo $(CARGO_RS_CHECK_TOOLCHAIN) run --profile $(CARGO_PROFILE) \ + RUSTFLAGS="$(RUSTFLAGS)" cargo $(CARGO_RS_CHECK_TOOLCHAIN) run \ --example write_params_to_file --features=boolean,shortint,internal-keycache .PHONY: clone_backward_compat_data # Clone the data repo needed for backward compatibility tests @@ -1313,15 +1328,17 @@ sha256_bool: install_rs_check_toolchain --example sha256_bool --features=boolean .PHONY: pcc # pcc stands for pre commit checks (except GPU) -pcc: no_tfhe_typo no_dbg_log check_fmt check_typos lint_doc check_md_docs_are_tested check_intra_md_links \ -clippy_all check_compile_tests test_tfhe_lints tfhe_lints +pcc: no_tfhe_typo no_dbg_log check_parameter_export_ok check_fmt check_typos lint_doc \ +check_md_docs_are_tested check_intra_md_links clippy_all check_compile_tests test_tfhe_lints \ +tfhe_lints .PHONY: pcc_gpu # pcc stands for pre commit checks for GPU compilation -pcc_gpu: clippy_gpu clippy_cuda_backend check_compile_tests_benches_gpu check_rust_bindings_did_not_change +pcc_gpu: check_rust_bindings_did_not_change clippy_rustdoc_gpu \ +clippy_gpu clippy_cuda_backend check_compile_tests_benches_gpu .PHONY: fpcc # pcc stands for pre commit checks, the f stands for fast -fpcc: no_tfhe_typo no_dbg_log check_fmt check_typos lint_doc check_md_docs_are_tested clippy_fast \ -check_compile_tests +fpcc: no_tfhe_typo no_dbg_log check_parameter_export_ok check_fmt check_typos lint_doc \ +check_md_docs_are_tested clippy_fast check_compile_tests .PHONY: conformance # Automatically fix problems that can be fixed conformance: fix_newline fmt fmt_js diff --git a/apps/trivium/README.md b/apps/trivium/README.md index 9124f0881..1cceaceca 100644 --- a/apps/trivium/README.md +++ b/apps/trivium/README.md @@ -18,102 +18,102 @@ use tfhe::prelude::*; use tfhe_trivium::TriviumStream; fn get_hexadecimal_string_from_lsb_first_stream(a: Vec) -> String { - assert!(a.len() % 8 == 0); - let mut hexadecimal: String = "".to_string(); - for test in a.chunks(8) { - // Encoding is bytes in LSB order - match test[4..8] { - [false, false, false, false] => hexadecimal.push('0'), - [true, false, false, false] => hexadecimal.push('1'), - [false, true, false, false] => hexadecimal.push('2'), - [true, true, false, false] => hexadecimal.push('3'), + assert!(a.len() % 8 == 0); + let mut hexadecimal: String = "".to_string(); + for test in a.chunks(8) { + // Encoding is bytes in LSB order + match test[4..8] { + [false, false, false, false] => hexadecimal.push('0'), + [true, false, false, false] => hexadecimal.push('1'), + [false, true, false, false] => hexadecimal.push('2'), + [true, true, false, false] => hexadecimal.push('3'), - [false, false, true, false] => hexadecimal.push('4'), - [true, false, true, false] => hexadecimal.push('5'), - [false, true, true, false] => hexadecimal.push('6'), - [true, true, true, false] => hexadecimal.push('7'), + [false, false, true, false] => hexadecimal.push('4'), + [true, false, true, false] => hexadecimal.push('5'), + [false, true, true, false] => hexadecimal.push('6'), + [true, true, true, false] => hexadecimal.push('7'), - [false, false, false, true] => hexadecimal.push('8'), - [true, false, false, true] => hexadecimal.push('9'), - [false, true, false, true] => hexadecimal.push('A'), - [true, true, false, true] => hexadecimal.push('B'), + [false, false, false, true] => hexadecimal.push('8'), + [true, false, false, true] => hexadecimal.push('9'), + [false, true, false, true] => hexadecimal.push('A'), + [true, true, false, true] => hexadecimal.push('B'), - [false, false, true, true] => hexadecimal.push('C'), - [true, false, true, true] => hexadecimal.push('D'), - [false, true, true, true] => hexadecimal.push('E'), - [true, true, true, true] => hexadecimal.push('F'), - _ => () - }; - match test[0..4] { - [false, false, false, false] => hexadecimal.push('0'), - [true, false, false, false] => hexadecimal.push('1'), - [false, true, false, false] => hexadecimal.push('2'), - [true, true, false, false] => hexadecimal.push('3'), + [false, false, true, true] => hexadecimal.push('C'), + [true, false, true, true] => hexadecimal.push('D'), + [false, true, true, true] => hexadecimal.push('E'), + [true, true, true, true] => hexadecimal.push('F'), + _ => () + }; + match test[0..4] { + [false, false, false, false] => hexadecimal.push('0'), + [true, false, false, false] => hexadecimal.push('1'), + [false, true, false, false] => hexadecimal.push('2'), + [true, true, false, false] => hexadecimal.push('3'), - [false, false, true, false] => hexadecimal.push('4'), - [true, false, true, false] => hexadecimal.push('5'), - [false, true, true, false] => hexadecimal.push('6'), - [true, true, true, false] => hexadecimal.push('7'), + [false, false, true, false] => hexadecimal.push('4'), + [true, false, true, false] => hexadecimal.push('5'), + [false, true, true, false] => hexadecimal.push('6'), + [true, true, true, false] => hexadecimal.push('7'), - [false, false, false, true] => hexadecimal.push('8'), - [true, false, false, true] => hexadecimal.push('9'), - [false, true, false, true] => hexadecimal.push('A'), - [true, true, false, true] => hexadecimal.push('B'), + [false, false, false, true] => hexadecimal.push('8'), + [true, false, false, true] => hexadecimal.push('9'), + [false, true, false, true] => hexadecimal.push('A'), + [true, true, false, true] => hexadecimal.push('B'), - [false, false, true, true] => hexadecimal.push('C'), - [true, false, true, true] => hexadecimal.push('D'), - [false, true, true, true] => hexadecimal.push('E'), - [true, true, true, true] => hexadecimal.push('F'), - _ => () - }; - } - return hexadecimal; + [false, false, true, true] => hexadecimal.push('C'), + [true, false, true, true] => hexadecimal.push('D'), + [false, true, true, true] => hexadecimal.push('E'), + [true, true, true, true] => hexadecimal.push('F'), + _ => () + }; + } + return hexadecimal; } fn main() { - let config = ConfigBuilder::default().build(); - let (client_key, server_key) = generate_keys(config); + let config = ConfigBuilder::default().build(); + let (client_key, server_key) = generate_keys(config); - let key_string = "0053A6F94C9FF24598EB".to_string(); - let mut key = [false; 80]; + let key_string = "0053A6F94C9FF24598EB".to_string(); + let mut key = [false; 80]; - for i in (0..key_string.len()).step_by(2) { - let mut val: u8 = u8::from_str_radix(&key_string[i..i+2], 16).unwrap(); - for j in 0..8 { - key[8*(i>>1) + j] = val % 2 == 1; - val >>= 1; - } - } + for i in (0..key_string.len()).step_by(2) { + let mut val: u8 = u8::from_str_radix(&key_string[i..i+2], 16).unwrap(); + for j in 0..8 { + key[8*(i>>1) + j] = val % 2 == 1; + val >>= 1; + } + } - let iv_string = "0D74DB42A91077DE45AC".to_string(); - let mut iv = [false; 80]; + let iv_string = "0D74DB42A91077DE45AC".to_string(); + let mut iv = [false; 80]; - for i in (0..iv_string.len()).step_by(2) { - let mut val: u8 = u8::from_str_radix(&iv_string[i..i+2], 16).unwrap(); - for j in 0..8 { - iv[8*(i>>1) + j] = val % 2 == 1; - val >>= 1; - } - } + for i in (0..iv_string.len()).step_by(2) { + let mut val: u8 = u8::from_str_radix(&iv_string[i..i+2], 16).unwrap(); + for j in 0..8 { + iv[8*(i>>1) + j] = val % 2 == 1; + val >>= 1; + } + } - let output_0_63 = "F4CD954A717F26A7D6930830C4E7CF0819F80E03F25F342C64ADC66ABA7F8A8E6EAA49F23632AE3CD41A7BD290A0132F81C6D4043B6E397D7388F3A03B5FE358".to_string(); + let output_0_63 = "F4CD954A717F26A7D6930830C4E7CF0819F80E03F25F342C64ADC66ABA7F8A8E6EAA49F23632AE3CD41A7BD290A0132F81C6D4043B6E397D7388F3A03B5FE358".to_string(); - let cipher_key = key.map(|x| FheBool::encrypt(x, &client_key)); - let cipher_iv = iv.map(|x| FheBool::encrypt(x, &client_key)); + let cipher_key = key.map(|x| FheBool::encrypt(x, &client_key)); + let cipher_iv = iv.map(|x| FheBool::encrypt(x, &client_key)); - let mut trivium = TriviumStream::::new(cipher_key, cipher_iv, &server_key); + let mut trivium = TriviumStream::::new(cipher_key, cipher_iv, &server_key); - let mut vec = Vec::::with_capacity(64*8); - while vec.len() < 64*8 { - let cipher_outputs = trivium.next_64(); - for c in cipher_outputs { - vec.push(c.decrypt(&client_key)) - } - } + let mut vec = Vec::::with_capacity(64*8); + while vec.len() < 64*8 { + let cipher_outputs = trivium.next_64(); + for c in cipher_outputs { + vec.push(c.decrypt(&client_key)) + } + } - let hexadecimal = get_hexadecimal_string_from_lsb_first_stream(vec); - assert_eq!(output_0_63, hexadecimal[0..64*2]); + let hexadecimal = get_hexadecimal_string_from_lsb_first_stream(vec); + assert_eq!(output_0_63, hexadecimal[0..64*2]); } ``` @@ -129,7 +129,7 @@ Other sizes than 64 bit are expected to be available in the future. # FHE shortint Trivium implementation -The same implementation is also available for generic Ciphertexts representing bits (meant to be used with parameters `V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64`). +The same implementation is also available for generic Ciphertexts representing bits (meant to be used with parameters `V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128`). It uses a lower level API of tfhe-rs, so the syntax is a little bit different. It also implements the `TransCiphering` trait. For optimization purposes, it does not internally run on the same cryptographic parameters as the high level API of tfhe-rs. As such, it requires the usage of a casting key, to switch from one parameter space to another, which makes its setup a little more intricate. @@ -137,67 +137,68 @@ its setup a little more intricate. Example code: ```rust use tfhe::shortint::prelude::*; -use tfhe::shortint::parameters::{ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, +use tfhe::shortint::parameters::v1_0::{ + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, }; use tfhe::{ConfigBuilder, generate_keys, FheUint64}; use tfhe::prelude::*; use tfhe_trivium::TriviumStreamShortint; fn test_shortint() { - let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + let config = ConfigBuilder::default() + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); - let (hl_client_key, hl_server_key) = generate_keys(config); + let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); - let (client_key, server_key): (ClientKey, ServerKey) = gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + let (client_key, server_key): (ClientKey, ServerKey) = gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128_2M128, ); - let key_string = "0053A6F94C9FF24598EB".to_string(); - let mut key = [0; 80]; + let key_string = "0053A6F94C9FF24598EB".to_string(); + let mut key = [0; 80]; - for i in (0..key_string.len()).step_by(2) { - let mut val = u64::from_str_radix(&key_string[i..i+2], 16).unwrap(); - for j in 0..8 { - key[8*(i>>1) + j] = val % 2; - val >>= 1; - } - } + for i in (0..key_string.len()).step_by(2) { + let mut val = u64::from_str_radix(&key_string[i..i+2], 16).unwrap(); + for j in 0..8 { + key[8*(i>>1) + j] = val % 2; + val >>= 1; + } + } - let iv_string = "0D74DB42A91077DE45AC".to_string(); - let mut iv = [0; 80]; + let iv_string = "0D74DB42A91077DE45AC".to_string(); + let mut iv = [0; 80]; - for i in (0..iv_string.len()).step_by(2) { - let mut val = u64::from_str_radix(&iv_string[i..i+2], 16).unwrap(); - for j in 0..8 { - iv[8*(i>>1) + j] = val % 2; - val >>= 1; - } - } - let output_0_63 = "F4CD954A717F26A7D6930830C4E7CF0819F80E03F25F342C64ADC66ABA7F8A8E6EAA49F23632AE3CD41A7BD290A0132F81C6D4043B6E397D7388F3A03B5FE358".to_string(); + for i in (0..iv_string.len()).step_by(2) { + let mut val = u64::from_str_radix(&iv_string[i..i+2], 16).unwrap(); + for j in 0..8 { + iv[8*(i>>1) + j] = val % 2; + val >>= 1; + } + } + let output_0_63 = "F4CD954A717F26A7D6930830C4E7CF0819F80E03F25F342C64ADC66ABA7F8A8E6EAA49F23632AE3CD41A7BD290A0132F81C6D4043B6E397D7388F3A03B5FE358".to_string(); - let cipher_key = key.map(|x| client_key.encrypt(x)); - let cipher_iv = iv.map(|x| client_key.encrypt(x)); + let cipher_key = key.map(|x| client_key.encrypt(x)); + let cipher_iv = iv.map(|x| client_key.encrypt(x)); - let mut ciphered_message = vec![FheUint64::try_encrypt(0u64, &hl_client_key).unwrap(); 9]; + let mut ciphered_message = vec![FheUint64::try_encrypt(0u64, &hl_client_key).unwrap(); 9]; - let mut trivium = TriviumStreamShortint::new(cipher_key, cipher_iv, &server_key, &ksk); + let mut trivium = TriviumStreamShortint::new(cipher_key, cipher_iv, &server_key, &ksk); - let mut vec = Vec::::with_capacity(8); - while vec.len() < 8 { - let trans_ciphered_message = trivium.trans_encrypt_64(ciphered_message.pop().unwrap(), &hl_server_key); - vec.push(trans_ciphered_message.decrypt(&hl_client_key)); - } + let mut vec = Vec::::with_capacity(8); + while vec.len() < 8 { + let trans_ciphered_message = trivium.trans_encrypt_64(ciphered_message.pop().unwrap(), &hl_server_key); + vec.push(trans_ciphered_message.decrypt(&hl_client_key)); + } - let hexadecimal = get_hexagonal_string_from_u64(vec); - assert_eq!(output_0_63, hexadecimal[0..64*2]); + let hexadecimal = get_hexagonal_string_from_u64(vec); + assert_eq!(output_0_63, hexadecimal[0..64*2]); } ``` diff --git a/apps/trivium/benches/kreyvium_shortint.rs b/apps/trivium/benches/kreyvium_shortint.rs index ce9559405..3d65d4d19 100644 --- a/apps/trivium/benches/kreyvium_shortint.rs +++ b/apps/trivium/benches/kreyvium_shortint.rs @@ -1,8 +1,9 @@ use criterion::Criterion; use tfhe::prelude::*; -use tfhe::shortint::parameters::{ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, +use tfhe::shortint::parameters::v1_0::{ + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, }; use tfhe::shortint::prelude::*; use tfhe::{generate_keys, ConfigBuilder, FheUint64}; @@ -10,19 +11,19 @@ use tfhe_trivium::{KreyviumStreamShortint, TransCiphering}; pub fn kreyvium_shortint_warmup(c: &mut Criterion) { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); let (client_key, server_key): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, ); let key_string = "0053A6F94C9FF24598EB000000000000".to_string(); @@ -63,19 +64,19 @@ pub fn kreyvium_shortint_warmup(c: &mut Criterion) { pub fn kreyvium_shortint_gen(c: &mut Criterion) { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); let (client_key, server_key): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, ); let key_string = "0053A6F94C9FF24598EB000000000000".to_string(); @@ -111,19 +112,19 @@ pub fn kreyvium_shortint_gen(c: &mut Criterion) { pub fn kreyvium_shortint_trans(c: &mut Criterion) { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); let (client_key, server_key): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, ); let key_string = "0053A6F94C9FF24598EB000000000000".to_string(); diff --git a/apps/trivium/benches/trivium_shortint.rs b/apps/trivium/benches/trivium_shortint.rs index deec12928..3c0b9097a 100644 --- a/apps/trivium/benches/trivium_shortint.rs +++ b/apps/trivium/benches/trivium_shortint.rs @@ -1,8 +1,9 @@ use criterion::Criterion; use tfhe::prelude::*; -use tfhe::shortint::parameters::{ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, +use tfhe::shortint::parameters::v1_0::{ + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, }; use tfhe::shortint::prelude::*; use tfhe::{generate_keys, ConfigBuilder, FheUint64}; @@ -10,19 +11,19 @@ use tfhe_trivium::{TransCiphering, TriviumStreamShortint}; pub fn trivium_shortint_warmup(c: &mut Criterion) { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); let (client_key, server_key): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, ); let key_string = "0053A6F94C9FF24598EB".to_string(); @@ -63,19 +64,19 @@ pub fn trivium_shortint_warmup(c: &mut Criterion) { pub fn trivium_shortint_gen(c: &mut Criterion) { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); let (client_key, server_key): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, ); let key_string = "0053A6F94C9FF24598EB".to_string(); @@ -111,19 +112,19 @@ pub fn trivium_shortint_gen(c: &mut Criterion) { pub fn trivium_shortint_trans(c: &mut Criterion) { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); let (client_key, server_key): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, ); let key_string = "0053A6F94C9FF24598EB".to_string(); diff --git a/apps/trivium/src/kreyvium/test.rs b/apps/trivium/src/kreyvium/test.rs index 7306ee36e..e16c6a830 100644 --- a/apps/trivium/src/kreyvium/test.rs +++ b/apps/trivium/src/kreyvium/test.rs @@ -1,8 +1,9 @@ use crate::{KreyviumStream, KreyviumStreamByte, KreyviumStreamShortint, TransCiphering}; use tfhe::prelude::*; -use tfhe::shortint::parameters::{ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, +use tfhe::shortint::parameters::v1_0::{ + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, }; use tfhe::{generate_keys, ConfigBuilder, FheBool, FheUint64, FheUint8}; // Values for these tests come from the github repo renaud1239/Kreyvium, @@ -220,19 +221,19 @@ use tfhe::shortint::prelude::*; #[test] fn kreyvium_test_shortint_long() { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); let (client_key, server_key): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, ); let key_string = "0053A6F94C9FF24598EB000000000000".to_string(); diff --git a/apps/trivium/src/trivium/test.rs b/apps/trivium/src/trivium/test.rs index eccd4cdea..dbd8eb30c 100644 --- a/apps/trivium/src/trivium/test.rs +++ b/apps/trivium/src/trivium/test.rs @@ -1,8 +1,9 @@ use crate::{TransCiphering, TriviumStream, TriviumStreamByte, TriviumStreamShortint}; use tfhe::prelude::*; -use tfhe::shortint::parameters::{ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, +use tfhe::shortint::parameters::v1_0::{ + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, }; use tfhe::{generate_keys, ConfigBuilder, FheBool, FheUint64, FheUint8}; // Values for these tests come from the github repo cantora/avr-crypto-lib, commit 2a5b018, @@ -356,19 +357,19 @@ use tfhe::shortint::prelude::*; #[test] fn trivium_test_shortint_long() { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); let (hl_client_key, hl_server_key) = generate_keys(config); let underlying_ck: tfhe::shortint::ClientKey = (*hl_client_key.as_ref()).clone().into(); let underlying_sk: tfhe::shortint::ServerKey = (*hl_server_key.as_ref()).clone().into(); let (client_key, server_key): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ksk = KeySwitchingKey::new( (&client_key, Some(&server_key)), (&underlying_ck, &underlying_sk), - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, ); let key_string = "0053A6F94C9FF24598EB".to_string(); diff --git a/scripts/backward_compat_data_version.py b/scripts/backward_compat_data_version.py index c9aa240dc..1a6fa4936 100755 --- a/scripts/backward_compat_data_version.py +++ b/scripts/backward_compat_data_version.py @@ -1,13 +1,17 @@ #!/usr/bin/python3 -import tomllib +try: + import tomllib # Python v3.11+ +except ModuleNotFoundError: + import pip._vendor.tomli as tomllib # the same tomllib that's now included in Python v3.11+ + fname = "tests/Cargo.toml" with open(fname, "rb") as f: data = tomllib.load(f) - dev_dependencies = data.get("dev-dependencies") + dev_dependencies = data["dev-dependencies"] - branch_name = dev_dependencies["tfhe-backward-compat-data"].get("branch") + branch_name = dev_dependencies["tfhe-backward-compat-data"]["branch"] print(branch_name) diff --git a/scripts/check_current_param_export.py b/scripts/check_current_param_export.py new file mode 100644 index 000000000..653d9bd09 --- /dev/null +++ b/scripts/check_current_param_export.py @@ -0,0 +1,34 @@ +#!/usr/bin/python3 + +from pathlib import Path + +from utils import get_repo_root, format_version_major_minor, get_tfhe_version + + +def main(): + repo_root = get_repo_root() + tfhe_current_version = format_version_major_minor(get_tfhe_version()) + shortint_param_file = repo_root / "tfhe/src/shortint/parameters/mod.rs" + + with open(shortint_param_file, "r", encoding="utf-8") as f: + lines = f.readlines() + for line in lines: + line = line.strip() + if "as current_params;" in line: + print("Content:", line) + expected = f"use {tfhe_current_version} as current_params;" + print("Expected use:", expected) + if not line.endswith(expected): + print( + "Use clause for current parameters does not match current TFHE-rs version" + ) + exit(1) + else: + print("OK") + return + print("Did not find import line.") + exit(1) + + +if __name__ == "__main__": + main() diff --git a/scripts/generate_all_vec_for_lattice_estimator.py b/scripts/generate_all_vec_for_lattice_estimator.py new file mode 100644 index 000000000..610e0ed41 --- /dev/null +++ b/scripts/generate_all_vec_for_lattice_estimator.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 + +from pathlib import Path +import re +from collections import defaultdict +from typing import List +from utils import get_repo_root, format_version_major_minor, get_tfhe_version + + +pascal_to_snake = lambda s: re.sub(r"(? str: + joined_params = ",\n ".join( + f"""(&{param_name}, "{param_name}")""" for param_name in param_names + ) + let_param_type_for_const = pascal_to_snake(param_type).upper() + let_param_type_for_const = let_param_type_for_const.replace("P_B_S", "PBS") + return f"""/// All [`{param_type}`] in this module. +pub const VEC_ALL_{let_param_type_for_const}: [(&{param_type}, &str); {len(param_names)}] = +[ + {joined_params} +]; +""" + + +def main(): + all_vec_params = defaultdict(list) + tfhe_rs_version = format_version_major_minor(get_tfhe_version()) + tfhe_rs_version_capitalized = tfhe_rs_version.upper() + params_dir_path = get_repo_root() / f"tfhe/src/shortint/parameters/{tfhe_rs_version}" + for p in params_dir_path.rglob("*"): + if not p.is_file(): + continue + + file_content = None + with open(p, "r", encoding="utf-8") as f: + file_content = f.read() + + matches = re.finditer( + f"pub const {tfhe_rs_version_capitalized}([^=]+)", file_content, re.MULTILINE + ) + + for match in matches: + match = match.group(0) + match = match.replace("\n", " ") + + (pub_const_param_name, param_type) = match.split(":") + pub_const_param_name = pub_const_param_name.strip() + param_type = param_type.strip() + param_name = pub_const_param_name.rsplit(" ", maxsplit=1)[1] + + # print(param_name, param_type) + + all_vec_params[param_type].append(param_name) + + # print(all_vec_params) + + for param_type, param_names in all_vec_params.items(): + print(format_all_param_vec(param_type, param_names)) + + +if __name__ == "__main__": + main() diff --git a/scripts/utils/__init__.py b/scripts/utils/__init__.py new file mode 100644 index 000000000..16281fe0b --- /dev/null +++ b/scripts/utils/__init__.py @@ -0,0 +1 @@ +from .utils import * diff --git a/scripts/utils/utils.py b/scripts/utils/utils.py new file mode 100644 index 000000000..d7e12de6a --- /dev/null +++ b/scripts/utils/utils.py @@ -0,0 +1,29 @@ +from pathlib import Path + +try: + import tomllib # Python v3.11+ +except ModuleNotFoundError: + import pip._vendor.tomli as tomllib # the same tomllib that's now included in Python v3.11+ + + +def get_repo_root() -> Path: + current_file = Path(__file__) + return current_file.parent.parent.parent + + +def get_tfhe_version() -> str: + repo_root = get_repo_root() + tfhe_cargo_toml_file = "tfhe/Cargo.toml" + + with open(repo_root / tfhe_cargo_toml_file, "rb") as f: + tfhe_cargo_toml = tomllib.load(f) + return tfhe_cargo_toml["package"]["version"] + + +def format_version_major_minor(version: str) -> str: + hyphenated_version = "v" + version.replace(".", "_") + + if hyphenated_version.count("_") == 1: + return hyphenated_version + else: + return hyphenated_version.rsplit("_", maxsplit=1)[0] diff --git a/tfhe/benches/core_crypto/ks_bench.rs b/tfhe/benches/core_crypto/ks_bench.rs index d2b6c9edc..b1ef472de 100644 --- a/tfhe/benches/core_crypto/ks_bench.rs +++ b/tfhe/benches/core_crypto/ks_bench.rs @@ -7,12 +7,24 @@ use serde::Serialize; use tfhe::boolean::prelude::*; use tfhe::core_crypto::prelude::*; use tfhe::keycache::NamedParam; +use tfhe::shortint::parameters::current_params::{ + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, +}; +#[cfg(not(feature = "gpu"))] +use tfhe::shortint::parameters::current_params::{ + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, +}; use tfhe::shortint::parameters::{ - COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, }; #[cfg(feature = "gpu")] use tfhe::shortint::parameters::{ @@ -21,44 +33,34 @@ use tfhe::shortint::parameters::{ PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, }; -#[cfg(not(feature = "gpu"))] -use tfhe::shortint::parameters::{ - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, -}; use tfhe::shortint::prelude::*; use tfhe::shortint::{MultiBitPBSParameters, PBSParameters}; #[cfg(not(feature = "gpu"))] const SHORTINT_BENCH_PARAMS: [ClassicPBSParameters; 5] = [ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, ]; #[cfg(feature = "gpu")] const SHORTINT_BENCH_PARAMS: [ClassicPBSParameters; 4] = [ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, ]; #[cfg(not(feature = "gpu"))] const SHORTINT_MULTI_BIT_BENCH_PARAMS: [MultiBitPBSParameters; 6] = [ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, ]; #[cfg(feature = "gpu")] @@ -112,10 +114,10 @@ fn benchmark_parameters_32bits() -> Vec<(String, CryptoParametersRecord)> { fn benchmark_compression_parameters() -> Vec<(String, CryptoParametersRecord)> { vec![( - COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.name(), + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.name(), ( - COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ) .into(), )] diff --git a/tfhe/benches/core_crypto/pbs_bench.rs b/tfhe/benches/core_crypto/pbs_bench.rs index a80d8a5fc..f9f010306 100644 --- a/tfhe/benches/core_crypto/pbs_bench.rs +++ b/tfhe/benches/core_crypto/pbs_bench.rs @@ -11,16 +11,17 @@ use tfhe::boolean::parameters::{ use tfhe::core_crypto::commons::math::ntt::ntt64::Ntt64; use tfhe::core_crypto::prelude::*; use tfhe::keycache::NamedParam; +use tfhe::shortint::parameters::current_params::*; use tfhe::shortint::parameters::*; const SHORTINT_BENCH_PARAMS_TUNIFORM: [ClassicPBSParameters; 1] = - [PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64]; + [PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128]; const SHORTINT_BENCH_PARAMS_GAUSSIAN: [ClassicPBSParameters; 4] = [ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, ]; const BOOLEAN_BENCH_PARAMS: [(&str, BooleanParameters); 2] = [ @@ -56,18 +57,18 @@ fn benchmark_parameters_32bits() -> Vec<(String, CryptoParametersRecord)> { fn throughput_benchmark_parameters_64bits() -> Vec<(String, CryptoParametersRecord)> { let parameters = if cfg!(feature = "gpu") { vec![ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, ] } else { vec![ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, ] }; @@ -102,12 +103,12 @@ fn multi_bit_benchmark_parameters_64bits( ] } else { vec![ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, ] }; @@ -831,41 +832,27 @@ mod cuda { }; use tfhe::core_crypto::prelude::*; use tfhe::keycache::NamedParam; - use tfhe::shortint::parameters::{ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - }; + use tfhe::shortint::parameters::current_params::*; + use tfhe::shortint::parameters::*; use tfhe::shortint::{ClassicPBSParameters, PBSParameters}; const SHORTINT_CUDA_BENCH_PARAMS: [ClassicPBSParameters; 14] = [ // TUniform - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // Gaussian - V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128, ]; fn cuda_benchmark_parameters_64bits() -> Vec<(String, CryptoParametersRecord)> { diff --git a/tfhe/benches/high_level_api/erc20.rs b/tfhe/benches/high_level_api/erc20.rs index 295a40c6e..942657c4f 100644 --- a/tfhe/benches/high_level_api/erc20.rs +++ b/tfhe/benches/high_level_api/erc20.rs @@ -271,7 +271,7 @@ use tfhe_cuda_backend::cuda_bind::cuda_get_number_of_gpus; fn main() { #[cfg(not(feature = "gpu"))] - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; #[cfg(feature = "gpu")] let params = PARAM_GPU_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_3_KS_PBS; diff --git a/tfhe/benches/integer/glwe_packing_compression.rs b/tfhe/benches/integer/glwe_packing_compression.rs index 212c85c47..983c90443 100644 --- a/tfhe/benches/integer/glwe_packing_compression.rs +++ b/tfhe/benches/integer/glwe_packing_compression.rs @@ -9,8 +9,10 @@ use rayon::prelude::*; use tfhe::integer::ciphertext::CompressedCiphertextListBuilder; use tfhe::integer::{ClientKey, RadixCiphertext}; use tfhe::keycache::NamedParam; -use tfhe::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use tfhe::shortint::parameters::{ + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, +}; fn cpu_glwe_packing(c: &mut Criterion) { let bench_name = "integer::packing_compression"; @@ -19,8 +21,8 @@ fn cpu_glwe_packing(c: &mut Criterion) { .sample_size(15) .measurement_time(std::time::Duration::from_secs(30)); - let param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let comp_param = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let comp_param = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let cks = ClientKey::new(param); @@ -154,7 +156,7 @@ mod cuda { use tfhe::integer::gpu::ciphertext::compressed_ciphertext_list::CudaCompressedCiphertextListBuilder; use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; use tfhe::integer::gpu::gen_keys_radix_gpu; - use tfhe::shortint::parameters::V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + use tfhe::shortint::parameters::current_params::*; fn gpu_glwe_packing(c: &mut Criterion) { let bench_name = "integer::cuda::packing_compression"; @@ -166,7 +168,7 @@ mod cuda { let stream = CudaStreams::new_multi_gpu(); let param = V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let comp_param = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let comp_param = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let log_message_modulus = param.message_modulus.0.ilog2() as usize; diff --git a/tfhe/benches/integer/zk_pke.rs b/tfhe/benches/integer/zk_pke.rs index 9fdf7ad52..911a2b4fd 100644 --- a/tfhe/benches/integer/zk_pke.rs +++ b/tfhe/benches/integer/zk_pke.rs @@ -13,16 +13,8 @@ use tfhe::integer::key_switching_key::KeySwitchingKey; use tfhe::integer::parameters::IntegerCompactCiphertextListExpansionMode; use tfhe::integer::{ClientKey, CompactPrivateKey, CompactPublicKey, ServerKey}; use tfhe::keycache::NamedParam; -use tfhe::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::{ - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, -}; -use tfhe::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::{ - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, -}; -use tfhe::shortint::parameters::PBSParameters; +use tfhe::shortint::parameters::current_params::*; +use tfhe::shortint::parameters::*; use tfhe::zk::{CompactPkeCrs, ZkComputeLoad}; use utilities::{write_to_json, OperatorType}; @@ -41,14 +33,15 @@ fn pke_zk_proof(c: &mut Criterion) { for (param_pke, _param_casting, param_fhe) in [ ( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), + // Non default params use the V1_0 prefix ( - V0_11_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, - V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), ] { let param_name = param_fhe.name(); @@ -173,14 +166,14 @@ fn pke_zk_verify(c: &mut Criterion, results_file: &Path) { for (param_pke, param_casting, param_fhe) in [ ( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), ( - V0_11_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, - V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), ] { let param_name = param_fhe.name(); diff --git a/tfhe/benches/shortint/bench.rs b/tfhe/benches/shortint/bench.rs index 2737d71b3..95365d578 100644 --- a/tfhe/benches/shortint/bench.rs +++ b/tfhe/benches/shortint/bench.rs @@ -7,48 +7,49 @@ use rand::Rng; use std::env; use tfhe::keycache::NamedParam; use tfhe::shortint::keycache::KEY_CACHE; +use tfhe::shortint::parameters::current_params::*; use tfhe::shortint::parameters::*; use tfhe::shortint::{Ciphertext, CompressedServerKey, ServerKey}; const SERVER_KEY_BENCH_PARAMS: [ClassicPBSParameters; 5] = [ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, ]; const SERVER_KEY_BENCH_PARAMS_EXTENDED: [ClassicPBSParameters; 16] = [ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128, ]; const SERVER_KEY_MULTI_BIT_BENCH_PARAMS: [MultiBitPBSParameters; 2] = [ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, ]; const SERVER_KEY_MULTI_BIT_BENCH_PARAMS_EXTENDED: [MultiBitPBSParameters; 6] = [ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, ]; enum BenchParamsSet { diff --git a/tfhe/benches/shortint/casting.rs b/tfhe/benches/shortint/casting.rs index 7992dfdcc..27714e137 100644 --- a/tfhe/benches/shortint/casting.rs +++ b/tfhe/benches/shortint/casting.rs @@ -1,9 +1,9 @@ use crate::utilities::{write_to_json, OperatorType}; use criterion::Criterion; use rayon::prelude::*; -use tfhe::shortint::parameters::{ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, +use tfhe::shortint::parameters::current_params::{ + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, }; use tfhe::shortint::prelude::*; @@ -12,12 +12,12 @@ pub fn pack_cast_64(c: &mut Criterion) { let mut bench_group = c.benchmark_group(bench_name); let (client_key_1, server_key_1): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let (client_key_2, server_key_2): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); - let ks_param = V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS; - let ks_param_name = "V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS"; + let ks_param = V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128; + let ks_param_name = "V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128"; let ksk = KeySwitchingKey::new( (&client_key_1, Some(&server_key_1)), @@ -63,12 +63,12 @@ pub fn pack_cast(c: &mut Criterion) { let mut bench_group = c.benchmark_group(bench_name); let (client_key_1, server_key_1): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let (client_key_2, server_key_2): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); - let ks_param = V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS; - let ks_param_name = "V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS"; + let ks_param = V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128; + let ks_param_name = "V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128"; let ksk = KeySwitchingKey::new( (&client_key_1, Some(&server_key_1)), @@ -104,12 +104,12 @@ pub fn cast(c: &mut Criterion) { let mut bench_group = c.benchmark_group(bench_name); let (client_key_1, server_key_1): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let (client_key_2, server_key_2): (ClientKey, ServerKey) = - gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); - let ks_param = V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS; - let ks_param_name = "V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS"; + let ks_param = V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128; + let ks_param_name = "V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128"; let ksk = KeySwitchingKey::new( (&client_key_1, Some(&server_key_1)), diff --git a/tfhe/benches/shortint/glwe_packing_compression.rs b/tfhe/benches/shortint/glwe_packing_compression.rs index 51314836f..b11408cc7 100644 --- a/tfhe/benches/shortint/glwe_packing_compression.rs +++ b/tfhe/benches/shortint/glwe_packing_compression.rs @@ -1,13 +1,15 @@ use criterion::{black_box, criterion_group, Criterion}; use rayon::iter::{IntoParallelIterator, ParallelIterator}; -use tfhe::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use tfhe::shortint::parameters::{ + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, +}; use tfhe::shortint::prelude::*; fn glwe_packing(c: &mut Criterion) { - let param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let comp_param = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let comp_param = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let number_to_pack = 256; diff --git a/tfhe/benches/utilities.rs b/tfhe/benches/utilities.rs index 139b39a8b..cec58b3a5 100644 --- a/tfhe/benches/utilities.rs +++ b/tfhe/benches/utilities.rs @@ -37,13 +37,13 @@ pub mod shortint_utils { use itertools::iproduct; use std::vec::IntoIter; use tfhe::shortint::parameters::compact_public_key_only::CompactPublicKeyEncryptionParameters; + #[cfg(not(feature = "gpu"))] + use tfhe::shortint::parameters::current_params::V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; use tfhe::shortint::parameters::list_compression::CompressionParameters; #[cfg(feature = "gpu")] use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_3_KS_PBS; - #[cfg(not(feature = "gpu"))] - use tfhe::shortint::parameters::V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; use tfhe::shortint::parameters::{ - ShortintKeySwitchingParameters, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintKeySwitchingParameters, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, }; use tfhe::shortint::{ ClassicPBSParameters, MultiBitPBSParameters, PBSParameters, ShortintParameterSet, @@ -66,7 +66,7 @@ pub mod shortint_utils { let params = vec![PARAM_GPU_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_3_KS_PBS.into()]; #[cfg(not(feature = "gpu"))] let params = vec![ - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), ]; let params_and_bit_sizes = iproduct!(params, env_config.bit_sizes()); @@ -76,7 +76,7 @@ pub mod shortint_utils { } else { // FIXME One set of parameter is tested since we want to benchmark only quickest // operations. - let params = vec![PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into()]; + let params = vec![PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into()]; let params_and_bit_sizes = iproduct!(params, env_config.bit_sizes()); Self { diff --git a/tfhe/c_api_tests/test_compressed_list.c b/tfhe/c_api_tests/test_compressed_list.c index 8bc96807a..b6fd8f7e2 100644 --- a/tfhe/c_api_tests/test_compressed_list.c +++ b/tfhe/c_api_tests/test_compressed_list.c @@ -20,11 +20,11 @@ int main(void) { assert(ok == 0); ok = config_builder_use_custom_parameters( - &builder, SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + &builder, SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); assert(ok == 0); ok = config_builder_enable_compression( - &builder, &SHORTINT_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + &builder, &SHORTINT_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); assert(ok == 0); ok = config_builder_build(builder, &config); diff --git a/tfhe/c_api_tests/test_high_level_compact_list.c b/tfhe/c_api_tests/test_high_level_compact_list.c index c5eadc32f..614a361d6 100644 --- a/tfhe/c_api_tests/test_high_level_compact_list.c +++ b/tfhe/c_api_tests/test_high_level_compact_list.c @@ -146,10 +146,10 @@ int main(void) { ok = config_builder_default(&builder); assert(ok == 0); ok = config_builder_use_custom_parameters( - &builder, SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + &builder, SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); assert(ok == 0); ok = use_dedicated_compact_public_key_parameters( - &builder, SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + &builder, SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); assert(ok == 0); ok = config_builder_build(builder, &config); assert(ok == 0); diff --git a/tfhe/c_api_tests/test_high_level_custom_integers.c b/tfhe/c_api_tests/test_high_level_custom_integers.c index c6a600f18..84d248cee 100644 --- a/tfhe/c_api_tests/test_high_level_custom_integers.c +++ b/tfhe/c_api_tests/test_high_level_custom_integers.c @@ -215,7 +215,7 @@ int main(void) { config_builder_default(&builder); config_builder_use_custom_parameters(&builder, - SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64); + SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128); config_builder_build(builder, &config); ClientKey *client_key = NULL; @@ -243,7 +243,7 @@ int main(void) { config_builder_default(&builder); config_builder_use_custom_parameters(&builder, - SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64); + SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128); config_builder_build(builder, &config); ClientKey *client_key = NULL; diff --git a/tfhe/c_api_tests/test_high_level_integers.c b/tfhe/c_api_tests/test_high_level_integers.c index 0cc0752e8..9880b8c88 100644 --- a/tfhe/c_api_tests/test_high_level_integers.c +++ b/tfhe/c_api_tests/test_high_level_integers.c @@ -647,7 +647,7 @@ int main(void) { assert(ok == 0); // Then use small parameters, those are gaussians as we don't have small TUniform params ok = config_builder_use_custom_parameters( - &builder, SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); + &builder, SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128); ok = config_builder_build(builder, &config); assert(ok == 0); diff --git a/tfhe/c_api_tests/test_high_level_zk.c b/tfhe/c_api_tests/test_high_level_zk.c index 2d1355163..1b6bddf3e 100644 --- a/tfhe/c_api_tests/test_high_level_zk.c +++ b/tfhe/c_api_tests/test_high_level_zk.c @@ -8,10 +8,10 @@ int main(void) { // Note that simply changing parameters like this does not yield secure parameters // Its only done for the example / tests - ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; assert(params.encryption_key_choice == ShortintEncryptionKeyChoiceBig); - ShortintCompactPublicKeyEncryptionParameters pke_params = SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + ShortintCompactPublicKeyEncryptionParameters pke_params = SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; int status; diff --git a/tfhe/c_api_tests/test_shortint_keygen.c b/tfhe/c_api_tests/test_shortint_keygen.c index c603c802f..08cc53dfe 100644 --- a/tfhe/c_api_tests/test_shortint_keygen.c +++ b/tfhe/c_api_tests/test_shortint_keygen.c @@ -15,7 +15,7 @@ void test_predefined_keygen_w_serde(void) { ShortintCompressedCiphertext *cct = NULL; ShortintCompressedCiphertext *deser_cct = NULL; ShortintCiphertext *decompressed_ct = NULL; - ShortintPBSParameters params = SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + ShortintPBSParameters params = SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; int gen_keys_ok = shortint_gen_keys_with_parameters(params, &cks, &sks); assert(gen_keys_ok == 0); @@ -79,7 +79,7 @@ void test_server_key_trivial_encrypt(void) { ShortintClientKey *cks = NULL; ShortintServerKey *sks = NULL; ShortintCiphertext *ct = NULL; - ShortintPBSParameters params = SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + ShortintPBSParameters params = SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; int gen_keys_ok = shortint_gen_keys_with_parameters(params, &cks, &sks); assert(gen_keys_ok == 0); @@ -219,10 +219,10 @@ void test_compressed_public_keygen(ShortintPBSParameters params) { int main(void) { test_predefined_keygen_w_serde(); test_custom_keygen(); - test_public_keygen(SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); - test_public_keygen(SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - test_compressed_public_keygen(SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); - test_compressed_public_keygen(SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); + test_public_keygen(SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); + test_public_keygen(SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128); + test_compressed_public_keygen(SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); + test_compressed_public_keygen(SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128); test_server_key_trivial_encrypt(); return EXIT_SUCCESS; } diff --git a/tfhe/c_api_tests/test_shortint_pbs.c b/tfhe/c_api_tests/test_shortint_pbs.c index c960aecf9..3f89bf1be 100644 --- a/tfhe/c_api_tests/test_shortint_pbs.c +++ b/tfhe/c_api_tests/test_shortint_pbs.c @@ -41,7 +41,7 @@ void test_shortint_pbs_2_bits_message(void) { ShortintPBSLookupTable *lookup_table = NULL; ShortintClientKey *cks = NULL; ShortintServerKey *sks = NULL; - ShortintPBSParameters params = SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + ShortintPBSParameters params = SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; int gen_keys_ok = shortint_gen_keys_with_parameters(params, &cks, &sks); assert(gen_keys_ok == 0); @@ -115,7 +115,7 @@ void test_shortint_bivariate_pbs_2_bits_message(void) { ShortintBivariatePBSLookupTable *lookup_table = NULL; ShortintClientKey *cks = NULL; ShortintServerKey *sks = NULL; - ShortintPBSParameters params = SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + ShortintPBSParameters params = SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; int gen_keys_ok = shortint_gen_keys_with_parameters(params, &cks, &sks); assert(gen_keys_ok == 0); diff --git a/tfhe/c_api_tests/test_shortint_server_key.c b/tfhe/c_api_tests/test_shortint_server_key.c index 9622e9714..a586844c9 100644 --- a/tfhe/c_api_tests/test_shortint_server_key.c +++ b/tfhe/c_api_tests/test_shortint_server_key.c @@ -539,9 +539,9 @@ void test_server_key(void) { const uint32_t message_bits = 2; const uint32_t carry_bits = 2; - ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; // We don't have TUniform small params, use gaussian instead - ShortintPBSParameters params_small = SHORTINT_V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintPBSParameters params_small = SHORTINT_V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; assert(params.message_modulus == 1 << message_bits); assert(params.carry_modulus == 1 << carry_bits); diff --git a/tfhe/docs/fundamentals/compress.md b/tfhe/docs/fundamentals/compress.md index 131ebfb28..5f4fdd938 100644 --- a/tfhe/docs/fundamentals/compress.md +++ b/tfhe/docs/fundamentals/compress.md @@ -214,7 +214,7 @@ use tfhe::{ fn main() { let config = ConfigBuilder::default() .use_custom_parameters( - tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, ) .build(); let (client_key, _) = generate_keys(config); diff --git a/tfhe/docs/fundamentals/serialization.md b/tfhe/docs/fundamentals/serialization.md index 44e097484..74d6db6ff 100644 --- a/tfhe/docs/fundamentals/serialization.md +++ b/tfhe/docs/fundamentals/serialization.md @@ -55,7 +55,9 @@ Here is a more complete example: use tfhe::conformance::ParameterSetConformant; use tfhe::prelude::*; use tfhe::safe_serialization::{safe_serialize, safe_deserialize_conformant}; -use tfhe::shortint::parameters::{PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64}; +use tfhe::shortint::parameters::{ + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128}; use tfhe::conformance::ListSizeConstraint; use tfhe::{ generate_keys, FheUint8, CompactCiphertextList, FheUint8ConformanceParams, @@ -63,8 +65,10 @@ use tfhe::{ }; fn main() { - let params_1 = PARAM_MESSAGE_2_CARRY_2_KS_PBS; - let params_2 = V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + let params_1 = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let params_2 = PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; + + assert_ne!(params_1, params_2); let config = ConfigBuilder::with_custom_parameters(params_1).build(); diff --git a/tfhe/docs/guides/js_on_wasm_api.md b/tfhe/docs/guides/js_on_wasm_api.md index 25a0a226d..0a62ee7b5 100644 --- a/tfhe/docs/guides/js_on_wasm_api.md +++ b/tfhe/docs/guides/js_on_wasm_api.md @@ -34,7 +34,7 @@ function fhe_uint32_example() { // the error message will be displayed in the console init_panic_hook(); - const block_params = new ShortintParameters(ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64); + const block_params = new ShortintParameters(ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64); let config = TfheConfigBuilder.default() .build(); @@ -79,7 +79,7 @@ async function example() { await initThreadPool(navigator.hardwareConcurrency); await init_panic_hook(); - const block_params = new ShortintParameters(ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64); + const block_params = new ShortintParameters(ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64); // .... } ``` @@ -172,7 +172,7 @@ const { Shortint, ShortintParametersName, ShortintParameters } = require("/path/ function shortint_example() { // Get pre-defined parameters from the shortint module to manage messages with 4 bits of useful // information in total (2 bits of "message" and 2 bits of "carry") - let params_name = ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params_name = ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let params = new ShortintParameters(params_name); // Create a new secret ClientKey, this must not be shared console.log("Generating client keys...") diff --git a/tfhe/docs/guides/parallelized_pbs.md b/tfhe/docs/guides/parallelized_pbs.md index a1f8adaf3..0be778cb4 100644 --- a/tfhe/docs/guides/parallelized_pbs.md +++ b/tfhe/docs/guides/parallelized_pbs.md @@ -13,12 +13,11 @@ The following example shows how to use parallelized bootstrapping by choosing mu ```rust use tfhe::prelude::*; use tfhe::{generate_keys, set_server_key, ConfigBuilder, FheUint32}; +use tfhe::shortint::parameters::v1_0::V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; fn main() -> Result<(), Box> { let config = ConfigBuilder::default() - .use_custom_parameters( - tfhe::shortint::parameters::V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - ) + .use_custom_parameters(V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64) .build(); let (keys, server_keys) = generate_keys(config); @@ -46,11 +45,12 @@ Here's an example: ```rust use tfhe::prelude::*; use tfhe::{generate_keys, set_server_key, ConfigBuilder, FheUint32}; +use tfhe::shortint::parameters::v1_0::V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; fn main() -> Result<(), Box> { let config = ConfigBuilder::default() .use_custom_parameters( - tfhe::shortint::parameters::V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.with_deterministic_execution(), + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.with_deterministic_execution(), ) .build(); diff --git a/tfhe/docs/guides/public_key.md b/tfhe/docs/guides/public_key.md index b0773d1b4..73771209d 100644 --- a/tfhe/docs/guides/public_key.md +++ b/tfhe/docs/guides/public_key.md @@ -45,7 +45,7 @@ use tfhe::{ fn main() { let config = ConfigBuilder::default() .use_custom_parameters( - tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, ) .build(); let (client_key, _) = generate_keys(config); diff --git a/tfhe/docs/guides/zk-pok.md b/tfhe/docs/guides/zk-pok.md index 7d6a554e0..bbf00f09c 100644 --- a/tfhe/docs/guides/zk-pok.md +++ b/tfhe/docs/guides/zk-pok.md @@ -25,11 +25,11 @@ use tfhe::zk::{CompactPkeCrs, ZkComputeLoad}; pub fn main() -> Result<(), Box> { let mut rng = thread_rng(); - let params = tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; // Indicate which parameters to use for the Compact Public Key encryption - let cpk_params = tfhe::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let cpk_params = tfhe::shortint::parameters::PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; // And parameters allowing to keyswitch/cast to the computation parameters. - let casting_params = tfhe::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let casting_params = tfhe::shortint::parameters::PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; // Enable the dedicated parameters on the config let config = tfhe::ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)).build(); @@ -102,11 +102,11 @@ use tfhe::zk::{CompactPkeCrs, ZkComputeLoad}; pub fn main() -> Result<(), Box> { let mut rng = thread_rng(); - let params = tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = tfhe::shortint::parameters::v1_0::V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; // Indicate which parameters to use for the Compact Public Key encryption - let cpk_params = tfhe::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1; + let cpk_params = tfhe::shortint::parameters::v1_0::compact_public_key_only::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; // And parameters allowing to keyswitch/cast to the computation parameters. - let casting_params = tfhe::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1; + let casting_params = tfhe::shortint::parameters::v1_0::key_switching::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; // Enable the dedicated parameters on the config let config = tfhe::ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)).build(); diff --git a/tfhe/examples/sha256.rs b/tfhe/examples/sha256.rs index 7cca1aaaa..ea9ff968f 100644 --- a/tfhe/examples/sha256.rs +++ b/tfhe/examples/sha256.rs @@ -4,7 +4,10 @@ use std::io::{stdin, Read}; use std::mem::MaybeUninit; use std::{array, iter}; use tfhe::prelude::*; -use tfhe::shortint::parameters::*; +use tfhe::shortint::parameters::v1_0::{ + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, +}; use tfhe::{set_server_key, ClientKey, CompressedServerKey, ConfigBuilder, Device, FheUint32}; // might improve error message on type error @@ -187,10 +190,10 @@ fn main() -> Result<(), std::io::Error> { let config = match args.multibit { None => ConfigBuilder::default(), Some(2) => ConfigBuilder::with_custom_parameters( - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, ), Some(3) => ConfigBuilder::with_custom_parameters( - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, ), Some(v) => { panic!("Invalid multibit setting {v}"); diff --git a/tfhe/examples/utilities/generates_test_keys.rs b/tfhe/examples/utilities/generates_test_keys.rs index 500bde94e..6edec4d79 100644 --- a/tfhe/examples/utilities/generates_test_keys.rs +++ b/tfhe/examples/utilities/generates_test_keys.rs @@ -13,32 +13,11 @@ use tfhe::shortint::parameters::coverage_parameters::{ COVERAGE_PARAM_MESSAGE_5_CARRY_1_KS_PBS, COVERAGE_PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS, }; -use tfhe::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS; use tfhe::shortint::parameters::key_switching::ShortintKeySwitchingParameters; -use tfhe::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::{ - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, -}; +use tfhe::shortint::parameters::current_params::*; use tfhe::shortint::parameters::{ - ClassicPBSParameters, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + ClassicPBSParameters, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, }; #[cfg(feature = "experimental")] use tfhe::shortint::parameters::{ @@ -106,25 +85,18 @@ fn client_server_keys() { ClassicPBSParameters, ClassicPBSParameters, ShortintKeySwitchingParameters, - ); 2] = [ - ( - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, - ), - ( - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, - ), - ]; + ); 1] = [( + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + )]; generate_ksk_keys(&KSK_PARAMS); #[cfg(feature = "experimental")] { const WOPBS_PARAMS: [(ClassicPBSParameters, WopbsParameters); 1] = [( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS, )]; generate_wopbs_keys(&WOPBS_PARAMS); @@ -134,23 +106,25 @@ fn client_server_keys() { [DEFAULT_PARAMETERS, DEFAULT_PARAMETERS_KS_PBS]; generate_boolean_keys(&BOOLEAN_PARAMS); } else { - const PBS_KEYS: [ClassicPBSParameters; 14] = [ + const PBS_KEYS: [ClassicPBSParameters; 15] = [ // TUniform - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // Gaussian - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + // 2M64 as backup as 2M128 is too slow + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, ]; generate_pbs_keys(&PBS_KEYS); @@ -158,19 +132,19 @@ fn client_server_keys() { { const WOPBS_PARAMS: [(ClassicPBSParameters, WopbsParameters); 4] = [ ( - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS, ), ( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS, ), ( - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS, ), ( - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS, ), ]; diff --git a/tfhe/examples/utilities/hlapi_compact_pk_ct_sizes.rs b/tfhe/examples/utilities/hlapi_compact_pk_ct_sizes.rs index 7b3fd28ed..57a8b27d5 100644 --- a/tfhe/examples/utilities/hlapi_compact_pk_ct_sizes.rs +++ b/tfhe/examples/utilities/hlapi_compact_pk_ct_sizes.rs @@ -9,9 +9,9 @@ use std::path::Path; use tfhe::integer::U256; use tfhe::keycache::NamedParam; use tfhe::prelude::*; -use tfhe::shortint::parameters::classic::compact_pk::{ - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, +use tfhe::shortint::parameters::current_params::{ + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, }; use tfhe::shortint::PBSParameters; use tfhe::{ @@ -40,7 +40,7 @@ pub fn cpk_and_cctl_sizes(results_file: &Path) { let operator = OperatorType::Atomic; { - let params = V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64; + let params = V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; let config = ConfigBuilder::default() .use_custom_parameters(params) .build(); @@ -98,7 +98,7 @@ pub fn cpk_and_cctl_sizes(results_file: &Path) { } { - let params = V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64; + let params = V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128; let config = ConfigBuilder::default() .use_custom_parameters(params) .build(); @@ -157,7 +157,7 @@ pub fn cpk_and_cctl_sizes(results_file: &Path) { // 256 bits { - let params = V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64; + let params = V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; let config = ConfigBuilder::default() .use_custom_parameters(params) .build(); @@ -205,7 +205,7 @@ pub fn cpk_and_cctl_sizes(results_file: &Path) { } { - let params = V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64; + let params = V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128; let config = ConfigBuilder::default() .use_custom_parameters(params) .build(); diff --git a/tfhe/examples/utilities/params_to_file.rs b/tfhe/examples/utilities/params_to_file.rs index 48d7f32e3..6c1388d5a 100644 --- a/tfhe/examples/utilities/params_to_file.rs +++ b/tfhe/examples/utilities/params_to_file.rs @@ -6,14 +6,12 @@ use tfhe::boolean::parameters::{BooleanParameters, VEC_BOOLEAN_PARAM}; use tfhe::core_crypto::commons::parameters::{GlweDimension, LweDimension, PolynomialSize}; use tfhe::core_crypto::prelude::{DynamicDistribution, TUniform, UnsignedInteger}; use tfhe::keycache::NamedParam; -use tfhe::shortint::parameters::classic::compact_pk::ALL_PARAMETER_VEC_COMPACT_PK; -use tfhe::shortint::parameters::classic::gaussian::ALL_PARAMETER_VEC_GAUSSIAN; -use tfhe::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::multi_bit::ALL_MULTI_BIT_PARAMETER_VEC; +use tfhe::shortint::parameters::current_params::{ + VEC_ALL_CLASSIC_PBS_PARAMETERS, VEC_ALL_COMPACT_PUBLIC_KEY_ENCRYPTION_PARAMETERS, + VEC_ALL_COMPRESSION_PARAMETERS, VEC_ALL_MULTI_BIT_PBS_PARAMETERS, +}; use tfhe::shortint::parameters::{ CompactPublicKeyEncryptionParameters, CompressionParameters, ShortintParameterSet, - COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, }; pub trait ParamDetails { @@ -151,15 +149,10 @@ struct ParamGroupKey { ///Function to print in the lattice_estimator format the parameters /// Format: LWE.Parameters(n=722, q=2^32, Xs=ND.UniformMod(2), /// Xe=ND.DiscreteGaussian(56139.60810663548), tag='test_lattice_estimator') -pub fn format_lwe_parameters_to_lattice_estimator< - U: UnsignedInteger, - T: ParamDetails + NamedParam, ->( - param: &T, - similar_params: Vec, +pub fn format_lwe_parameters_to_lattice_estimator>( + (param, name): (&T, &str), + similar_params: &[&str], ) -> String { - let name = param.name(); - match param.lwe_noise_distribution() { DynamicDistribution::Gaussian(distrib) => { let modular_std_dev = @@ -180,15 +173,10 @@ pub fn format_lwe_parameters_to_lattice_estimator< ///Function to print in the lattice_estimator format the parameters /// Format: LWE.Parameters(n=722, q=2^32, Xs=ND.UniformMod(2), /// Xe=ND.DiscreteGaussian(56139.60810663548), tag='test_lattice_estimator') -pub fn format_glwe_parameters_to_lattice_estimator< - U: UnsignedInteger, - T: ParamDetails + NamedParam, ->( - param: &T, - similar_params: Vec, +pub fn format_glwe_parameters_to_lattice_estimator>( + (param, name): (&T, &str), + similar_params: &[&str], ) -> String { - let name = param.name(); - match param.glwe_noise_distribution() { DynamicDistribution::Gaussian(distrib) => { let modular_std_dev = @@ -218,7 +206,7 @@ fn write_file(file: &mut File, filename: &Path, line: impl Into) { fn write_all_params_in_file + Copy + NamedParam>( filename: &str, - params: &[T], + params: &[(T, Option<&str>)], format: ParametersFormat, ) { let path = Path::new(filename); @@ -228,9 +216,9 @@ fn write_all_params_in_file + Copy + Name .open(path) .expect("cannot open parsed results file"); - let mut params_groups: HashMap> = HashMap::new(); + let mut params_groups: HashMap> = HashMap::new(); - for params in params.iter() { + for (params, optional_name) in params.iter() { let keys = match format { ParametersFormat::LweGlwe => vec![ ParamGroupKey { @@ -267,10 +255,19 @@ fn write_all_params_in_file + Copy + Name for key in keys.into_iter() { match params_groups.get_mut(&key) { Some(vec) => { - vec.push(*params); + vec.push(( + *params, + optional_name.map_or_else(|| params.name(), |name| name.to_string()), + )); } None => { - params_groups.insert(key, vec![*params]); + params_groups.insert( + key, + vec![( + *params, + optional_name.map_or_else(|| params.name(), |name| name.to_string()), + )], + ); } }; } @@ -279,16 +276,22 @@ fn write_all_params_in_file + Copy + Name let mut param_names_augmented = Vec::new(); for (key, group) in params_groups.iter() { - let similar_params = group.iter().map(|p| p.name()).collect::>(); - let ref_param = group[0]; + let similar_params = group.iter().map(|p| p.1.as_str()).collect::>(); + let (ref_param, ref_param_name) = &group[0]; let formatted_param = match key.parameters_format { ParametersFormat::Lwe => { - param_names_augmented.push(format!("{}_LWE", ref_param.name())); - format_lwe_parameters_to_lattice_estimator(&ref_param, similar_params) + param_names_augmented.push(format!("{}_LWE", ref_param_name)); + format_lwe_parameters_to_lattice_estimator( + (ref_param, ref_param_name.as_str()), + &similar_params, + ) } ParametersFormat::Glwe => { - param_names_augmented.push(format!("{}_GLWE", ref_param.name())); - format_glwe_parameters_to_lattice_estimator(&ref_param, similar_params) + param_names_augmented.push(format!("{}_GLWE", ref_param_name)); + format_glwe_parameters_to_lattice_estimator( + (ref_param, ref_param_name.as_str()), + &similar_params, + ) } ParametersFormat::LweGlwe => panic!("formatted parameters cannot be LweGlwe"), }; @@ -305,47 +308,50 @@ fn main() { new_work_dir.push("ci"); std::env::set_current_dir(new_work_dir).unwrap(); + let boolean_params: Vec<_> = VEC_BOOLEAN_PARAM.into_iter().map(|p| (p, None)).collect(); write_all_params_in_file( "boolean_parameters_lattice_estimator.sage", - &VEC_BOOLEAN_PARAM, + &boolean_params, ParametersFormat::LweGlwe, ); - let all_classic_pbs = [ - ALL_PARAMETER_VEC_GAUSSIAN.to_vec(), - ALL_PARAMETER_VEC_COMPACT_PK.to_vec(), - vec![PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64], - ] - .concat(); - let classic_pbs = all_classic_pbs - .iter() - .map(|p| ShortintParameterSet::from(*p)) - .collect::>(); + let classic_pbs: Vec<_> = VEC_ALL_CLASSIC_PBS_PARAMETERS + .into_iter() + .map(|p| (ShortintParameterSet::from(*p.0), Some(p.1))) + .collect(); write_all_params_in_file( "shortint_classic_parameters_lattice_estimator.sage", &classic_pbs, ParametersFormat::LweGlwe, ); - let multi_bit_pbs = ALL_MULTI_BIT_PARAMETER_VEC - .iter() - .map(|p| ShortintParameterSet::from(*p)) - .collect::>(); + let multi_bit_pbs: Vec<_> = VEC_ALL_MULTI_BIT_PBS_PARAMETERS + .into_iter() + .map(|p| (ShortintParameterSet::from(*p.0), Some(p.1))) + .collect(); write_all_params_in_file( "shortint_multi_bit_parameters_lattice_estimator.sage", &multi_bit_pbs, ParametersFormat::LweGlwe, ); + let cpk_params: Vec<_> = VEC_ALL_COMPACT_PUBLIC_KEY_ENCRYPTION_PARAMETERS + .into_iter() + .map(|p| (*p.0, Some(p.1))) + .collect(); write_all_params_in_file( "shortint_cpke_parameters_lattice_estimator.sage", - &[V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64], + &cpk_params, ParametersFormat::Lwe, ); + let comp_params: Vec<_> = VEC_ALL_COMPRESSION_PARAMETERS + .into_iter() + .map(|p| (*p.0, Some(p.1))) + .collect(); write_all_params_in_file( "shortint_list_compression_parameters_lattice_estimator.sage", - &[COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64], + &comp_params, ParametersFormat::Glwe, ); diff --git a/tfhe/examples/utilities/print_doc_bench_parameters.rs b/tfhe/examples/utilities/print_doc_bench_parameters.rs index c13b9558d..bacb62602 100644 --- a/tfhe/examples/utilities/print_doc_bench_parameters.rs +++ b/tfhe/examples/utilities/print_doc_bench_parameters.rs @@ -1,13 +1,15 @@ use tfhe::keycache::NamedParam; -use tfhe::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use tfhe::shortint::parameters::{ + PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, +}; pub fn main() { println!("CPU Integer parameters:\n"); - println!("{}", PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.name()); - println!("{PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64:?}"); + println!("{}", PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.name()); + println!("{PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:?}"); println!("\n\n===========================================================================\n\n"); @@ -21,7 +23,7 @@ pub fn main() { println!("\n\n===========================================================================\n\n"); println!("CPU PBS parameters:\n"); - let param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let bits = (param.message_modulus.0 * param.carry_modulus.0).ilog2(); println!("Precision {bits} bits"); println!("{}", param.name()); @@ -43,21 +45,21 @@ pub fn main() { println!("Compact Public Key parameters (encryption + ZK):"); println!( "{}", - stringify!(V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) + stringify!(PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128) ); - println!("{V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64:?}\n"); + println!("{PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:?}\n"); println!("Corresponding compute FHE parameters:"); println!( "{}", - stringify!(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) + stringify!(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128) ); - println!("{PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64:?}\n"); + println!("{PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:?}\n"); println!("Keyswitch from encryption + ZK to compute parameters:"); println!( "{}", - stringify!(V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) + stringify!(PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128) ); - println!("{V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64:?}"); + println!("{PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128:?}"); } diff --git a/tfhe/examples/utilities/shortint_key_sizes.rs b/tfhe/examples/utilities/shortint_key_sizes.rs index 99350b133..d6ab3499c 100644 --- a/tfhe/examples/utilities/shortint_key_sizes.rs +++ b/tfhe/examples/utilities/shortint_key_sizes.rs @@ -7,26 +7,8 @@ use std::io::Write; use std::path::Path; use tfhe::keycache::NamedParam; use tfhe::shortint::keycache::KEY_CACHE; -use tfhe::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::{ - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, -}; +use tfhe::shortint::parameters::current_params::*; +use tfhe::shortint::parameters::*; use tfhe::shortint::{ ClassicPBSParameters, ClientKey, CompactPrivateKey, CompressedCompactPublicKey, CompressedKeySwitchingKey, CompressedServerKey, PBSParameters, @@ -40,17 +22,17 @@ fn write_result(file: &mut File, name: &str, value: usize) { fn client_server_key_sizes(results_file: &Path) { let shortint_params_vec: Vec = vec![ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64.into(), + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(), + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128.into(), + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128.into(), + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128.into(), + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128.into(), + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64.into(), + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64.into(), + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64.into(), + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), + V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64.into(), PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64.into(), PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), @@ -184,7 +166,7 @@ fn tuniform_key_set_sizes(results_file: &Path) { println!("Measuring shortint key sizes:"); - let param_fhe = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let param_fhe = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let param_fhe_name = param_fhe.name(); let cks = ClientKey::new(param_fhe); let compressed_sks = CompressedServerKey::new(&cks); @@ -224,8 +206,8 @@ fn tuniform_key_set_sizes(results_file: &Path) { &mut file, ); - let param_pke = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let param_pke_name = stringify!(PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let param_pke = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let param_pke_name = stringify!(PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let compact_private_key = CompactPrivateKey::new(param_pke); let compressed_pk = CompressedCompactPublicKey::new(&compact_private_key); let pk = compressed_pk.decompress(); @@ -240,11 +222,11 @@ fn tuniform_key_set_sizes(results_file: &Path) { &mut file, ); - let param_compression = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let param_compression_name = stringify!(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let param_compression = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let param_compression_name = stringify!(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let params_tuple = ( param_compression, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let private_compression_key = cks.new_compression_private_key(param_compression); @@ -268,8 +250,8 @@ fn tuniform_key_set_sizes(results_file: &Path) { &mut file, ); - let param_casting = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let param_casting_name = stringify!(PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let param_casting = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let param_casting_name = stringify!(PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let compressed_casting_key = CompressedKeySwitchingKey::new( (&compact_private_key, None), (&cks, &compressed_sks), diff --git a/tfhe/examples/utilities/wasm_benchmarks_parser.rs b/tfhe/examples/utilities/wasm_benchmarks_parser.rs index b8facda27..ef8e0833d 100644 --- a/tfhe/examples/utilities/wasm_benchmarks_parser.rs +++ b/tfhe/examples/utilities/wasm_benchmarks_parser.rs @@ -9,22 +9,7 @@ use std::fs::{File, OpenOptions}; use std::io::Write; use std::path::Path; use tfhe::keycache::NamedParam; -use tfhe::shortint::keycache::{ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_NAME, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64_NAME, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64_NAME, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64_NAME, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64_NAME, -}; -use tfhe::shortint::parameters::classic::compact_pk::{ - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, -}; -use tfhe::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::{ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, -}; +use tfhe::shortint::keycache::get_shortint_parameter_set_from_name; use tfhe::shortint::{ClassicPBSParameters, PBSParameters}; const BENCHMARK_NAME_PREFIX: &str = "wasm::"; @@ -36,23 +21,14 @@ struct Args { } fn params_from_name(name: &str) -> ClassicPBSParameters { - match name.to_uppercase().as_str() { - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64_NAME => { - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64 + match get_shortint_parameter_set_from_name(name.to_uppercase().as_str()) + .pbs_parameters() + .unwrap() + { + PBSParameters::PBS(p) => p, + PBSParameters::MultiBitPBS(_) => { + panic!("Tried to get a MultiBitPBS, expected ClassicPBSParameters") } - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64_NAME => { - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64 - } - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64_NAME => { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64 - } - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64_NAME => { - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 - } - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_NAME => { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 - } - _ => panic!("failed to get parameters for name '{name}'"), } } diff --git a/tfhe/js_on_wasm_tests/test-hlapi-signed.js b/tfhe/js_on_wasm_tests/test-hlapi-signed.js index 3239bc1e4..3d34d3d12 100644 --- a/tfhe/js_on_wasm_tests/test-hlapi-signed.js +++ b/tfhe/js_on_wasm_tests/test-hlapi-signed.js @@ -100,7 +100,7 @@ test("hlapi_compressed_public_client_int8_big", (t) => { test("hlapi_public_key_encrypt_decrypt_int32_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -127,7 +127,7 @@ test("hlapi_public_key_encrypt_decrypt_int32_small", (t) => { test("hlapi_decompress_public_key_then_encrypt_decrypt_int32_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -213,7 +213,7 @@ test("hlapi_client_key_encrypt_decrypt_int128_big", (t) => { test("hlapi_client_key_encrypt_decrypt_int128_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -323,7 +323,7 @@ test("hlapi_client_key_encrypt_decrypt_int256_big", (t) => { test("hlapi_client_key_encrypt_decrypt_int256_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -384,7 +384,7 @@ test("hlapi_client_key_encrypt_decrypt_int256_small", (t) => { test("hlapi_decompress_public_key_then_encrypt_decrypt_int256_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -412,7 +412,7 @@ test("hlapi_decompress_public_key_then_encrypt_decrypt_int256_small", (t) => { test("hlapi_public_key_encrypt_decrypt_int256_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -470,7 +470,7 @@ function hlapi_compact_public_key_encrypt_decrypt_int32_single(config) { test("hlapi_compact_public_key_encrypt_decrypt_int32_big_single", (t) => { const block_params = new ShortintParameters( - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_128, ); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -481,7 +481,7 @@ test("hlapi_compact_public_key_encrypt_decrypt_int32_big_single", (t) => { test("hlapi_compact_public_key_encrypt_decrypt_int32_small_single", (t) => { const block_params = new ShortintParameters( - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, ); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -563,10 +563,10 @@ test("hlapi_compact_ciphertext_list", (t) => { test("hlapi_compact_ciphertext_list_with_proof", (t) => { const block_params = new ShortintParameters( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let publicKeyParams = new ShortintCompactPublicKeyEncryptionParameters( - ShortintCompactPublicKeyEncryptionParametersName.SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintCompactPublicKeyEncryptionParametersName.PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let config = TfheConfigBuilder.default() @@ -616,10 +616,10 @@ test("hlapi_compact_pk_conformance", (t) => { const limit = BigInt(1 << 20); let blockParams = new ShortintParameters( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let publicKeyParams = new ShortintCompactPublicKeyEncryptionParameters( - ShortintCompactPublicKeyEncryptionParametersName.SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintCompactPublicKeyEncryptionParametersName.PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let config = TfheConfigBuilder.default() diff --git a/tfhe/js_on_wasm_tests/test-hlapi-unsigned.js b/tfhe/js_on_wasm_tests/test-hlapi-unsigned.js index cb1e42530..2a59a26c9 100644 --- a/tfhe/js_on_wasm_tests/test-hlapi-unsigned.js +++ b/tfhe/js_on_wasm_tests/test-hlapi-unsigned.js @@ -80,7 +80,7 @@ test("hlapi_key_gen_big", (t) => { test("hlapi_key_gen_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -151,7 +151,7 @@ test("hlapi_compressed_public_client_uint8_big", (t) => { test("hlapi_public_key_encrypt_decrypt_uint32_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -178,7 +178,7 @@ test("hlapi_public_key_encrypt_decrypt_uint32_small", (t) => { test("hlapi_decompress_public_key_then_encrypt_decrypt_uint32_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -264,7 +264,7 @@ test("hlapi_client_key_encrypt_decrypt_uint128_big", (t) => { test("hlapi_client_key_encrypt_decrypt_uint128_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -365,7 +365,7 @@ test("hlapi_client_key_encrypt_decrypt_uint256_big", (t) => { test("hlapi_client_key_encrypt_decrypt_uint256_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -417,7 +417,7 @@ test("hlapi_client_key_encrypt_decrypt_uint256_small", (t) => { test("hlapi_decompress_public_key_then_encrypt_decrypt_uint256_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -445,7 +445,7 @@ test("hlapi_decompress_public_key_then_encrypt_decrypt_uint256_small", (t) => { test("hlapi_public_key_encrypt_decrypt_uint256_small", (t) => { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); diff --git a/tfhe/js_on_wasm_tests/test.js b/tfhe/js_on_wasm_tests/test.js index 22224d676..e927e9919 100644 --- a/tfhe/js_on_wasm_tests/test.js +++ b/tfhe/js_on_wasm_tests/test.js @@ -104,7 +104,7 @@ test("boolean_deterministic_keygen", (t) => { // Shortint tests test("shortint_encrypt_decrypt", (t) => { let params_name = - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let params = new ShortintParameters(params_name); let cks = Shortint.new_client_key(params); let ct = Shortint.encrypt(cks, BigInt(3)); @@ -128,7 +128,7 @@ test("shortint_encrypt_decrypt", (t) => { // Encryption using small keys let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let cks_small = Shortint.new_client_key(params_small); @@ -144,7 +144,7 @@ test("shortint_encrypt_decrypt", (t) => { test("shortint_compressed_encrypt_decrypt", (t) => { let params_name = - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let params = new ShortintParameters(params_name); let cks = Shortint.new_client_key(params); let ct = Shortint.encrypt_compressed(cks, BigInt(3)); @@ -164,7 +164,7 @@ test("shortint_compressed_encrypt_decrypt", (t) => { // Encryption using small keys // We don't have TUniform small params so use previous gaussian ones. let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let cks_small = Shortint.new_client_key(params_small); @@ -184,7 +184,7 @@ test("shortint_compressed_encrypt_decrypt", (t) => { test("shortint_public_encrypt_decrypt", (t) => { let params_name_2_0 = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128; let params_2_0 = new ShortintParameters(params_name_2_0); let cks = Shortint.new_client_key(params_2_0); let pk = Shortint.new_public_key(cks); @@ -199,7 +199,7 @@ test("shortint_public_encrypt_decrypt", (t) => { // Small let params_name_2_2_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_2_2_small = new ShortintParameters(params_name_2_2_small); let cks_small = Shortint.new_client_key(params_2_2_small); @@ -238,7 +238,7 @@ test("shortint_compressed_public_encrypt_decrypt", (t) => { // Small let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let cks_small = Shortint.new_client_key(params_small); @@ -268,7 +268,7 @@ test("shortint_deterministic_keygen", (t) => { let seed_low_bytes = genRandomBigIntWithBytes(8); let params_name = - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let params = new ShortintParameters(params_name); let cks = Shortint.new_client_key_from_seed_and_parameters( seed_high_bytes, diff --git a/tfhe/src/c_api/shortint/parameters.rs b/tfhe/src/c_api/shortint/parameters.rs index 64c1ac358..66c8df0b9 100644 --- a/tfhe/src/c_api/shortint/parameters.rs +++ b/tfhe/src/c_api/shortint/parameters.rs @@ -1,11 +1,9 @@ -pub use crate::core_crypto::commons::dispersion::StandardDev; -pub use crate::core_crypto::commons::parameters::{ - DecompositionBaseLog, DecompositionLevelCount, GlweDimension, LweDimension, PolynomialSize, -}; -use crate::core_crypto::commons::parameters::{NoiseEstimationMeasureBound, RSigmaFactor}; -use crate::core_crypto::prelude::{LweCiphertextCount, Variance}; -pub use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -pub use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::v0_11::classic::compact_pk::*; +use crate::shortint::parameters::v0_11::classic::gaussian::*; +use crate::shortint::parameters::v0_11::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::v0_11::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::v0_11::list_compression::V0_11_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::v1_0::*; use crate::shortint::parameters::ModulusSwitchNoiseReductionParams as RustModulusSwitchNoiseReductionParams; pub use crate::shortint::parameters::*; @@ -432,15 +430,40 @@ impl ShortintCompactPublicKeyEncryptionParameters { } } -// TODO: use macros once we have more parameters using the same pattern as -// expose_predefined_parameters -#[no_mangle] -pub static SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: - ShortintCompactPublicKeyEncryptionParameters = - ShortintCompactPublicKeyEncryptionParameters::convert(( +macro_rules! expose_as_shortint_compact_public_key_parameters( + ( + $( + ($param_pke_name:ident, $param_ks_name:ident) + ),* + $(,)? + ) => { + ::paste::paste!{ + $( + #[no_mangle] + pub static []: ShortintCompactPublicKeyEncryptionParameters = + ShortintCompactPublicKeyEncryptionParameters::convert(( + $param_pke_name, + $param_ks_name, + )); + )* + } + } +); + +expose_as_shortint_compact_public_key_parameters!( + ( + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 + ), + ( + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 + ), + ( V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - )); + V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + ), +); macro_rules! expose_as_shortint_pbs_parameters( ( @@ -468,7 +491,7 @@ macro_rules! expose_as_shortint_pbs_parameters( $( // 1 scope for each parameters { - let rust_params = crate::shortint::parameters::$param_name; + let rust_params = $param_name; let c_params = ShortintPBSParameters::from(rust_params); let rust_params_from_c = crate::shortint::parameters::ClassicPBSParameters::try_from(c_params).unwrap(); assert_eq!(rust_params, rust_params_from_c); @@ -479,6 +502,87 @@ macro_rules! expose_as_shortint_pbs_parameters( ); expose_as_shortint_pbs_parameters!( + // TUniform + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + // v1.0 + // Gaussian + V1_0_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128, + // Small params + V1_0_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128, + // CPK + V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + // CPK SMALL + V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + // v0.11 + // Gaussian V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, @@ -554,15 +658,33 @@ expose_as_shortint_pbs_parameters!( V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - // TUniform - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, ); pub struct CompressionParameters( pub(crate) crate::shortint::parameters::list_compression::CompressionParameters, ); -#[no_mangle] -pub static SHORTINT_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = CompressionParameters( - crate::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, +macro_rules! expose_as_shortint_compression_parameters( + ( + $( + $param_name:ident + ),* + $(,)? + ) => { + ::paste::paste!{ + $( + #[no_mangle] + pub static []: CompressionParameters = + CompressionParameters( + $param_name, + ); + )* + } + } +); + +expose_as_shortint_compression_parameters!( + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V0_11_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 ); diff --git a/tfhe/src/core_crypto/experimental/algorithms/glwe_fast_keyswitch.rs b/tfhe/src/core_crypto/experimental/algorithms/glwe_fast_keyswitch.rs index df018198b..756de2aab 100644 --- a/tfhe/src/core_crypto/experimental/algorithms/glwe_fast_keyswitch.rs +++ b/tfhe/src/core_crypto/experimental/algorithms/glwe_fast_keyswitch.rs @@ -90,7 +90,7 @@ use tfhe_fft::c64; /// /// let ct_plaintext = Plaintext(3 << 60); /// -/// let mut ct_plaintexts = PlaintextList::new(ct_plaintext.0, PlaintextCount(polynomial_size.0)); +/// let ct_plaintexts = PlaintextList::new(ct_plaintext.0, PlaintextCount(polynomial_size.0)); /// let mut ct = GlweCiphertext::new(0u64, glwe_size_in, polynomial_size, ciphertext_modulus); /// /// encrypt_glwe_ciphertext( diff --git a/tfhe/src/core_crypto/experimental/algorithms/glwe_partial_sample_extraction.rs b/tfhe/src/core_crypto/experimental/algorithms/glwe_partial_sample_extraction.rs index 24d6bc217..d19ae56f8 100644 --- a/tfhe/src/core_crypto/experimental/algorithms/glwe_partial_sample_extraction.rs +++ b/tfhe/src/core_crypto/experimental/algorithms/glwe_partial_sample_extraction.rs @@ -202,7 +202,7 @@ pub fn partial_extract_lwe_sample_from_glwe_ciphertext( /// let seeder = seeder.as_mut(); /// let mut secret_generator = SecretRandomGenerator::::new(seeder.seed()); /// -/// let mut glwe_secret_key: GlweSecretKeyOwned = +/// let glwe_secret_key: GlweSecretKeyOwned = /// allocate_and_generate_new_partial_binary_glwe_secret_key( /// glwe_dimension, /// polynomial_size, diff --git a/tfhe/src/high_level_api/compact_list.rs b/tfhe/src/high_level_api/compact_list.rs index 4d717db04..07bd17d98 100644 --- a/tfhe/src/high_level_api/compact_list.rs +++ b/tfhe/src/high_level_api/compact_list.rs @@ -313,6 +313,7 @@ mod zk { mod test { use super::*; use crate::integer::ciphertext::IntegerProvenCompactCiphertextListConformanceParams; + use crate::shortint::parameters::*; use crate::zk::CompactPkeCrs; use rand::{thread_rng, Rng}; @@ -320,11 +321,11 @@ mod zk { fn conformance_zk_compact_ciphertext_list() { let mut rng = thread_rng(); - let params = crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let cpk_params = crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let cpk_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let casting_params = crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let casting_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let config = crate::ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)); @@ -524,6 +525,7 @@ impl CompactCiphertextListBuilder { mod tests { use super::*; use crate::prelude::*; + use crate::shortint::parameters::*; use crate::{set_server_key, FheBool, FheInt64, FheUint16, FheUint2, FheUint32}; #[test] @@ -581,16 +583,12 @@ mod tests { #[test] fn test_compact_list_with_casting() { - use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let config = crate::ConfigBuilder::with_custom_parameters( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ) .use_dedicated_compact_public_key_parameters(( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, )) .build(); @@ -644,16 +642,12 @@ mod tests { #[cfg(feature = "zk-pok")] #[test] fn test_proven_compact_list() { - use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let config = crate::ConfigBuilder::with_custom_parameters( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ) .use_dedicated_compact_public_key_parameters(( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, )) .build(); @@ -733,17 +727,14 @@ mod tests { #[cfg(feature = "strings")] #[test] fn test_compact_list_with_string_and_casting() { - use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; use crate::FheAsciiString; let config = crate::ConfigBuilder::with_custom_parameters( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ) .use_dedicated_compact_public_key_parameters(( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, )) .build(); diff --git a/tfhe/src/high_level_api/compressed_ciphertext_list.rs b/tfhe/src/high_level_api/compressed_ciphertext_list.rs index 0cae9a4c9..6d6f387e2 100644 --- a/tfhe/src/high_level_api/compressed_ciphertext_list.rs +++ b/tfhe/src/high_level_api/compressed_ciphertext_list.rs @@ -700,9 +700,17 @@ pub mod gpu { mod tests { use crate::prelude::*; use crate::safe_serialization::{safe_deserialize, safe_serialize}; - use crate::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + // TODO GPU DRIFT UPDATE + use crate::shortint::parameters::current_params::{ + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + }; + use crate::shortint::parameters::{ + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + }; use crate::shortint::PBSParameters; use crate::{ set_server_key, unset_server_key, ClientKey, CompressedCiphertextList, @@ -711,12 +719,28 @@ mod tests { #[test] fn test_compressed_ct_list_cpu_gpu() { - for params in [ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), - ] { + // TODO GPU DRIFT UPDATE + let (test_params, comp_params) = if cfg!(feature = "gpu") { + ( + [ + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), + ], + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ) + } else { + ( + [ + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(), + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(), + ], + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ) + }; + + for params in test_params { let config = crate::ConfigBuilder::with_custom_parameters::(params) - .enable_compression(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) + .enable_compression(comp_params) .build(); let ck = crate::ClientKey::generate(config); @@ -865,9 +889,9 @@ mod tests { #[cfg(feature = "strings")] #[test] fn test_compressed_strings_cpu() { - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(); + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(); let config = crate::ConfigBuilder::with_custom_parameters::(params) - .enable_compression(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) + .enable_compression(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128) .build(); let ck = crate::ClientKey::generate(config); diff --git a/tfhe/src/high_level_api/integers/signed/tests.rs b/tfhe/src/high_level_api/integers/signed/tests.rs index 2af660545..e6b9eed64 100644 --- a/tfhe/src/high_level_api/integers/signed/tests.rs +++ b/tfhe/src/high_level_api/integers/signed/tests.rs @@ -1,7 +1,8 @@ use crate::integer::I256; use crate::prelude::*; use crate::safe_serialization::{DeserializationConfig, SerializationConfig}; -use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::current_params::*; +use crate::shortint::parameters::*; use crate::{ generate_keys, set_server_key, ClientKey, CompactCiphertextList, CompactPublicKey, CompressedFheInt16, CompressedFheInt32, Config, ConfigBuilder, FheInt16, FheInt256, FheInt32, @@ -25,10 +26,9 @@ fn test_signed_integer_compressed() { fn test_integer_compressed_small() { let mut rng = thread_rng(); - let config = ConfigBuilder::with_custom_parameters( - crate::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - ) - .build(); + let config = + ConfigBuilder::with_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128) + .build(); let (client_key, _) = generate_keys(config); let clear = rng.gen::(); @@ -280,9 +280,7 @@ fn test_int64_rotate() { #[test] fn test_multi_bit_rotate() { let config = ConfigBuilder::default() - .use_custom_parameters( - crate::shortint::parameters::V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - ) + .use_custom_parameters(V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); fhe_int64_rotate(config); } @@ -368,9 +366,7 @@ fn test_int32_div_rem() { #[test] fn test_multi_div_rem() { let config = ConfigBuilder::default() - .use_custom_parameters( - crate::shortint::parameters::V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - ) + .use_custom_parameters(V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128) .build(); fhe_int32_div_rem(config); } @@ -532,10 +528,9 @@ fn test_trivial_fhe_int8() { #[test] fn test_trivial_fhe_int256_small() { - let config = ConfigBuilder::with_custom_parameters( - crate::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - ) - .build(); + let config = + ConfigBuilder::with_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128) + .build(); let (client_key, sks) = generate_keys(config); set_server_key(sks); @@ -548,9 +543,7 @@ fn test_trivial_fhe_int256_small() { #[test] fn test_compact_public_key_big() { let config = ConfigBuilder::default() - .use_custom_parameters( - crate::shortint::parameters::classic::compact_pk::V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - ) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128) .build(); let (client_key, _) = generate_keys(config); @@ -568,9 +561,7 @@ fn test_compact_public_key_big() { #[test] fn test_compact_public_key_small() { let config = ConfigBuilder::default() - .use_custom_parameters( - crate::shortint::parameters::classic::compact_pk::V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - ) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128) .build(); let (client_key, _) = generate_keys(config); @@ -646,7 +637,7 @@ fn test_leading_trailing_zeros_ones() { #[test] fn test_safe_deserialize_conformant_fhe_int32() { - let block_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let block_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let (client_key, server_key) = generate_keys(ConfigBuilder::with_custom_parameters(block_params)); set_server_key(server_key.clone()); @@ -671,7 +662,7 @@ fn test_safe_deserialize_conformant_fhe_int32() { #[test] fn test_safe_deserialize_conformant_compressed_fhe_int32() { - let block_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let block_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let (client_key, server_key) = generate_keys(ConfigBuilder::with_custom_parameters(block_params)); set_server_key(server_key.clone()); diff --git a/tfhe/src/high_level_api/integers/unsigned/compressed.rs b/tfhe/src/high_level_api/integers/unsigned/compressed.rs index a337091ff..4f29c2cc1 100644 --- a/tfhe/src/high_level_api/integers/unsigned/compressed.rs +++ b/tfhe/src/high_level_api/integers/unsigned/compressed.rs @@ -189,7 +189,7 @@ where mod test { use super::*; use crate::core_crypto::prelude::UnsignedInteger; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::shortint::{CiphertextModulus, CompressedCiphertext}; use crate::{generate_keys, set_server_key, CompressedFheUint8, ConfigBuilder}; use rand::{thread_rng, Rng}; @@ -241,7 +241,7 @@ mod test { let ct = CompressedFheUint8::try_encrypt(0_u64, &client_key).unwrap(); assert!(ct.is_conformant(&FheUintConformanceParams::from( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 ))); let breaker_lists = [ @@ -265,7 +265,7 @@ mod test { breaker(i, &mut ct_clone); assert!(!ct_clone.is_conformant(&FheUintConformanceParams::from( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 ))); } } @@ -296,7 +296,7 @@ mod test { breaker(i, &mut ct_clone); assert!(!ct_clone.is_conformant(&FheUintConformanceParams::from( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 ))); } } @@ -313,7 +313,7 @@ mod test { let ct = CompressedFheUint8::try_encrypt(0_u64, &client_key).unwrap(); assert!(ct.is_conformant(&FheUintConformanceParams::from( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 ))); let mut rng = thread_rng(); @@ -333,7 +333,7 @@ mod test { .0 = rng.gen::(); } assert!(ct_clone.is_conformant(&FheUintConformanceParams::from( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 ))); let mut ct_clone_decompressed = ct_clone.decompress(); diff --git a/tfhe/src/high_level_api/integers/unsigned/tests/cpu.rs b/tfhe/src/high_level_api/integers/unsigned/tests/cpu.rs index d7b47be5c..801234ebc 100644 --- a/tfhe/src/high_level_api/integers/unsigned/tests/cpu.rs +++ b/tfhe/src/high_level_api/integers/unsigned/tests/cpu.rs @@ -4,9 +4,7 @@ use crate::high_level_api::tests::{setup_cpu, setup_default_cpu}; use crate::high_level_api::{generate_keys, set_server_key, ConfigBuilder, FheUint8}; use crate::integer::U256; use crate::safe_serialization::{DeserializationConfig, SerializationConfig}; -use crate::shortint::parameters::classic::compact_pk::*; -use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use crate::{ ClientKey, CompactCiphertextList, CompactCiphertextListConformanceParams, CompactPublicKey, @@ -46,10 +44,9 @@ fn test_integer_compressed() { #[test] fn test_integer_compressed_small() { - let config = ConfigBuilder::with_custom_parameters( - crate::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - ) - .build(); + let config = + ConfigBuilder::with_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128) + .build(); let (client_key, _) = generate_keys(config); let clear = 12_837u16; @@ -137,10 +134,9 @@ fn test_multi_div_rem() { #[test] fn test_small_uint128() { - let config = ConfigBuilder::with_custom_parameters( - crate::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - ) - .build(); + let config = + ConfigBuilder::with_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128) + .build(); let (cks, sks) = generate_keys(config); @@ -187,7 +183,7 @@ fn test_decompressed_public_key_encrypt() { #[test] fn test_compact_public_key_big() { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128) .build(); let (client_key, _) = generate_keys(config); @@ -205,7 +201,7 @@ fn test_compact_public_key_big() { #[test] fn test_compact_public_key_small() { let config = ConfigBuilder::default() - .use_custom_parameters(V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64) + .use_custom_parameters(V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64) .build(); let (client_key, _) = generate_keys(config); @@ -402,7 +398,7 @@ fn test_sum() { #[test] fn test_safe_deserialize_conformant_fhe_uint32() { - let block_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let block_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let (client_key, server_key) = generate_keys(ConfigBuilder::with_custom_parameters(block_params)); set_server_key(server_key.clone()); @@ -486,9 +482,9 @@ fn test_safe_deserialize_conformant_compact_fhe_uint32() { #[test] fn test_cpk_encrypt_cast_compute_hl() { - let param_pke_only = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let param_fhe = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let param_ksk = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let param_pke_only = V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let param_fhe = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let param_ksk = V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let num_block = 4usize; @@ -535,9 +531,9 @@ fn test_cpk_encrypt_cast_compute_hl() { #[test] fn test_compressed_cpk_encrypt_cast_compute_hl() { - let param_pke_only = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let param_fhe = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let param_ksk = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let param_pke_only = V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let param_fhe = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let param_ksk = V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let num_block = 4usize; diff --git a/tfhe/src/high_level_api/keys/inner.rs b/tfhe/src/high_level_api/keys/inner.rs index 6e547b24b..4c66b837e 100644 --- a/tfhe/src/high_level_api/keys/inner.rs +++ b/tfhe/src/high_level_api/keys/inner.rs @@ -67,7 +67,7 @@ impl Default for IntegerConfig { fn default() -> Self { #[cfg(not(feature = "gpu"))] let params = - crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(); + crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(); #[cfg(feature = "gpu")] let params = crate::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 diff --git a/tfhe/src/high_level_api/keys/public.rs b/tfhe/src/high_level_api/keys/public.rs index 45e9563db..11e0e6a0a 100644 --- a/tfhe/src/high_level_api/keys/public.rs +++ b/tfhe/src/high_level_api/keys/public.rs @@ -274,17 +274,15 @@ impl ParameterSetConformant for CompressedCompactPublicKey { #[cfg(test)] mod test { use crate::conformance::ParameterSetConformant; - use crate::shortint::parameters::{ - CompactPublicKeyEncryptionParameters, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - }; + use crate::shortint::parameters::current_params::V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; + use crate::shortint::parameters::*; use crate::{ generate_keys, ClientKey, CompactPublicKey, CompressedCompactPublicKey, ConfigBuilder, }; #[test] fn conformance_compact_public_key() { - let params = V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64; + let params = V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; let config = ConfigBuilder::default() .use_custom_parameters(params) @@ -302,11 +300,11 @@ mod test { #[test] fn conformance_compact_public_key_casting() { - let params = crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let cpk_params = crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let cpk_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let casting_params = crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let casting_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let config = ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)); @@ -320,7 +318,7 @@ mod test { #[test] fn conformance_compressed_compact_public_key() { - let params = V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64; + let params = V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; let config = ConfigBuilder::default() .use_custom_parameters(params) @@ -338,11 +336,13 @@ mod test { #[test] fn conformance_compressed_compact_public_key_casting() { - let params = crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let cpk_params = crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let cpk_params = + crate::shortint::parameters::PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let casting_params = crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let casting_params = + crate::shortint::parameters::PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let config = ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)); diff --git a/tfhe/src/high_level_api/keys/server.rs b/tfhe/src/high_level_api/keys/server.rs index 3ba212f91..74d2b5102 100644 --- a/tfhe/src/high_level_api/keys/server.rs +++ b/tfhe/src/high_level_api/keys/server.rs @@ -430,23 +430,27 @@ impl ParameterSetConformant for CompressedServerKey { mod test { use crate::high_level_api::keys::inner::IntegerServerKeyConformanceParams; use crate::prelude::ParameterSetConformant; - use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs; - use crate::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + use crate::shortint::parameters::{ + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + }; use crate::shortint::{ClassicPBSParameters, PBSParameters}; use crate::{ClientKey, CompressedServerKey, ConfigBuilder, ServerKey}; #[test] fn conformance_hl_key() { { - let config = - ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) - .build(); + let config = ConfigBuilder::with_custom_parameters( + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ) + .build(); let ck = ClientKey::generate(config); let sk = ServerKey::new(&ck); - let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let conformance_params = IntegerServerKeyConformanceParams { sk_param, @@ -457,30 +461,31 @@ mod test { assert!(sk.is_conformant(&conformance_params)); } { - let config = - ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) - .enable_compression(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) - .build(); + let config = ConfigBuilder::with_custom_parameters( + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ) + .enable_compression(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128) + .build(); let ck = ClientKey::generate(config); let sk = ServerKey::new(&ck); - let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let conformance_params = IntegerServerKeyConformanceParams { sk_param, cpk_param: None, - compression_param: Some(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64), + compression_param: Some(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128), }; assert!(sk.is_conformant(&conformance_params)); } { - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let cpk_params = ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let cpk_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let casting_params = crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let casting_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let config = ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)); @@ -488,7 +493,7 @@ mod test { let ck = ClientKey::generate(config); let sk = ServerKey::new(&ck); - let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let conformance_params = IntegerServerKeyConformanceParams { sk_param, @@ -503,9 +508,10 @@ mod test { #[test] fn broken_conformance_hl_key() { { - let config = - ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) - .build(); + let config = ConfigBuilder::with_custom_parameters( + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ) + .build(); let ck = ClientKey::generate(config); let sk = ServerKey::new(&ck); @@ -518,7 +524,7 @@ mod test { sk_param.polynomial_size.0 += 1; }, ] { - let mut sk_param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let mut sk_param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; modifier(&mut sk_param); @@ -534,11 +540,11 @@ mod test { } } { - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let mut cpk_params = ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let mut cpk_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let casting_params = crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let casting_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let config = ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)); @@ -546,7 +552,7 @@ mod test { let ck = ClientKey::generate(config); let sk = ServerKey::new(&ck); - let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); cpk_params.encryption_lwe_dimension.0 += 1; @@ -563,14 +569,15 @@ mod test { #[test] fn conformance_compressed_hl_key() { { - let config = - ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) - .build(); + let config = ConfigBuilder::with_custom_parameters( + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ) + .build(); let ck = ClientKey::generate(config); let sk = CompressedServerKey::new(&ck); - let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let conformance_params = IntegerServerKeyConformanceParams { sk_param, @@ -582,30 +589,30 @@ mod test { } { let config = crate::ConfigBuilder::with_custom_parameters( - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ) - .enable_compression(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) + .enable_compression(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128) .build(); let ck = ClientKey::generate(config); let sk = CompressedServerKey::new(&ck); - let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let conformance_params = IntegerServerKeyConformanceParams { sk_param, cpk_param: None, - compression_param: Some(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64), + compression_param: Some(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128), }; assert!(sk.is_conformant(&conformance_params)); } { - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let cpk_params = ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let cpk_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let casting_params = crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let casting_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let config = ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)); @@ -613,7 +620,7 @@ mod test { let ck = ClientKey::generate(config); let sk = CompressedServerKey::new(&ck); - let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let conformance_params = IntegerServerKeyConformanceParams { sk_param, @@ -628,9 +635,10 @@ mod test { #[test] fn broken_conformance_compressed_hl_key() { { - let config = - ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) - .build(); + let config = ConfigBuilder::with_custom_parameters( + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ) + .build(); let ck = ClientKey::generate(config); let sk = CompressedServerKey::new(&ck); @@ -643,7 +651,7 @@ mod test { sk_param.polynomial_size.0 += 1; }, ] { - let mut sk_param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let mut sk_param = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; modifier(&mut sk_param); @@ -659,11 +667,11 @@ mod test { } } { - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let mut cpk_params = ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let mut cpk_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; - let casting_params = crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let casting_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let config = ConfigBuilder::with_custom_parameters(params) .use_dedicated_compact_public_key_parameters((cpk_params, casting_params)); @@ -671,7 +679,7 @@ mod test { let ck = ClientKey::generate(config); let sk = CompressedServerKey::new(&ck); - let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let sk_param = PBSParameters::PBS(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); cpk_params.encryption_lwe_dimension.0 += 1; diff --git a/tfhe/src/high_level_api/tests/mod.rs b/tfhe/src/high_level_api/tests/mod.rs index 13642d4ff..2713819e8 100644 --- a/tfhe/src/high_level_api/tests/mod.rs +++ b/tfhe/src/high_level_api/tests/mod.rs @@ -182,7 +182,7 @@ fn test_serialize_deserialize_are_implemented() { #[test] fn test_try_from_single_lwe_encryption_key() { - let parameters = crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let parameters = crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let lwe_sk = crate::shortint::engine::ShortintEngine::with_thread_local_mut(|engine| { crate::core_crypto::algorithms::allocate_and_generate_new_binary_lwe_secret_key( parameters diff --git a/tfhe/src/high_level_api/tests/tags_on_entities.rs b/tfhe/src/high_level_api/tests/tags_on_entities.rs index ce8195860..f3a0eb07c 100644 --- a/tfhe/src/high_level_api/tests/tags_on_entities.rs +++ b/tfhe/src/high_level_api/tests/tags_on_entities.rs @@ -1,9 +1,16 @@ use crate::prelude::*; -use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use crate::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use crate::shortint::parameters::*; -use crate::shortint::ClassicPBSParameters; +use crate::shortint::parameters::{ + ClassicPBSParameters, CompactPublicKeyEncryptionParameters, CompressionParameters, + ShortintKeySwitchingParameters, COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, +}; +#[cfg(feature = "gpu")] +use crate::shortint::parameters::{ + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, +}; use crate::{ set_server_key, ClientKey, CompactCiphertextList, CompactCiphertextListExpander, CompactPublicKey, CompressedCiphertextList, CompressedCiphertextListBuilder, CompressedFheBool, @@ -16,15 +23,15 @@ use rand::random; fn test_tag_propagation_cpu() { test_tag_propagation( Device::Cpu, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, Some(( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, )), - Some(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64), + Some(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128), Some(( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, )), ) } @@ -32,14 +39,14 @@ fn test_tag_propagation_cpu() { #[test] #[cfg(feature = "zk-pok")] fn test_tag_propagation_zk_pok() { - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::ProvenCompactCiphertextList; let config = - ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) + ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128) .use_dedicated_compact_public_key_parameters(( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, )) .build(); let crs = crate::zk::CompactPkeCrs::from_config(config, (2 * 32) + (2 * 64) + 2).unwrap(); @@ -145,12 +152,13 @@ fn test_tag_propagation_zk_pok() { fn test_tag_propagation_gpu() { test_tag_propagation( Device::CudaGpu, + // TODO GPU DRIFT_UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, None, Some(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64), Some(( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, )), ) } diff --git a/tfhe/src/integer/ciphertext/base.rs b/tfhe/src/integer/ciphertext/base.rs index ab00ed6ed..d7936935b 100644 --- a/tfhe/src/integer/ciphertext/base.rs +++ b/tfhe/src/integer/ciphertext/base.rs @@ -68,10 +68,10 @@ impl RadixCiphertext { /// /// ```rust /// use tfhe::integer::{gen_keys_radix, RadixCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // 8 bits - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, 4); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, 4); /// /// let msg = 124u8; /// let msg2 = 17u8; @@ -170,10 +170,10 @@ impl SignedRadixCiphertext { /// /// ```rust /// use tfhe::integer::{gen_keys_radix, SignedRadixCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // 8 bits - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, 4); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, 4); /// /// let msg = -35i8; /// let msg2 = 17i8; diff --git a/tfhe/src/integer/ciphertext/boolean_value.rs b/tfhe/src/integer/ciphertext/boolean_value.rs index e045866c6..08383cb07 100644 --- a/tfhe/src/integer/ciphertext/boolean_value.rs +++ b/tfhe/src/integer/ciphertext/boolean_value.rs @@ -24,11 +24,11 @@ use tfhe_versionable::Versionize; /// /// ```rust /// use tfhe::integer::gen_keys_radix; -/// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +/// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; -/// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); +/// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let a = 128u8; /// let b = 55u8; @@ -83,11 +83,11 @@ impl BooleanBlock { /// /// ```rust /// use tfhe::integer::{gen_keys_radix, BooleanBlock}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let a = 128u8; /// let ct_a = cks.encrypt(a); @@ -142,10 +142,10 @@ impl BooleanBlock { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // 8 bits - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, 4); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, 4); /// /// let msg = false; /// let msg2 = true; diff --git a/tfhe/src/integer/ciphertext/compact_list.rs b/tfhe/src/integer/ciphertext/compact_list.rs index 0264ba164..857a6ae81 100644 --- a/tfhe/src/integer/ciphertext/compact_list.rs +++ b/tfhe/src/integer/ciphertext/compact_list.rs @@ -828,9 +828,9 @@ impl CompactCiphertextList { /// RadixCiphertext, SignedRadixCiphertext, /// }; /// use tfhe::integer::{ClientKey, CompactPublicKey}; - /// use tfhe::shortint::parameters::classic::compact_pk::V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// - /// let fhe_params = V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64; + /// let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4usize; /// @@ -1152,23 +1152,27 @@ mod tests { use crate::integer::{ BooleanBlock, ClientKey, CompactPrivateKey, CompactPublicKey, RadixCiphertext, ServerKey, }; - use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::{ - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, - }; - use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::{ - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, + use crate::shortint::parameters::{ + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, }; use crate::zk::{CompactPkeCrs, ZkComputeLoad}; + use crate::shortint::parameters::current_params::compact_public_key_only::p_fail_2_minus_128::ks_pbs::{ + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + }; + use crate::shortint::parameters::current_params::key_switching::p_fail_2_minus_128::ks_pbs::{ + V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + }; use rand::random; #[test] fn test_zk_compact_ciphertext_list_encryption_ci_run_filter() { - let pke_params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let ksk_params = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let pke_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let ksk_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let metadata = [b'i', b'n', b't', b'e', b'g', b'e', b'r']; @@ -1229,11 +1233,11 @@ mod tests { /// Test a compact list encryption proven with the v1 zk scheme #[test] fn test_zkv1_compact_ciphertext_list_encryption_ci_run_filter() { - let pke_params = V0_11_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1; + let pke_params = V1_0_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; let ksk_params = - V0_11_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1; + V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; - let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let metadata = [b'i', b'n', b't', b'e', b'g', b'e', b'r']; @@ -1293,9 +1297,9 @@ mod tests { #[test] fn test_several_proven_lists() { - let pke_params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let ksk_params = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let pke_params = V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let ksk_params = V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let metadata = [b'i', b'n', b't', b'e', b'g', b'e', b'r']; @@ -1356,9 +1360,9 @@ mod tests { fn test_malicious_boolean_proven_lists() { use super::DataKind; - let pke_params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let ksk_params = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let pke_params = V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let ksk_params = V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let metadata = [b'i', b'n', b't', b'e', b'g', b'e', b'r']; diff --git a/tfhe/src/integer/ciphertext/compressed_ciphertext_list.rs b/tfhe/src/integer/ciphertext/compressed_ciphertext_list.rs index 34a8b9e10..b5b580521 100644 --- a/tfhe/src/integer/ciphertext/compressed_ciphertext_list.rs +++ b/tfhe/src/integer/ciphertext/compressed_ciphertext_list.rs @@ -156,17 +156,17 @@ impl CompressedCiphertextList { mod tests { use super::*; use crate::integer::{gen_keys, IntegerKeyKind}; - use crate::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; use crate::shortint::ShortintParameterSet; + use crate::shortint::parameters::current_params::classic::tuniform::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + use crate::shortint::parameters::current_params::list_compression::p_fail_2_minus_128::V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + use crate::shortint::parameters::current_params::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; use itertools::Itertools; use rand::Rng; const NB_TESTS: usize = 10; const NB_OPERATOR_TESTS: usize = 10; const NUM_BLOCKS: usize = 32; - const MAX_NB_MESSAGES: usize = 2 * COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + const MAX_NB_MESSAGES: usize = 2 * V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 .lwe_per_glwe .0 / NUM_BLOCKS; @@ -174,13 +174,14 @@ mod tests { #[test] fn test_ciphertext_compression() { for params in [ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(), V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), ] { let (cks, sks) = gen_keys::(params, IntegerKeyKind::Radix); - let private_compression_key = - cks.new_compression_private_key(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let private_compression_key = cks.new_compression_private_key( + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ); let (compression_key, decompression_key) = cks.new_compression_decompression_keys(&private_compression_key); diff --git a/tfhe/src/integer/ciphertext/compressed_modulus_switched_ciphertext.rs b/tfhe/src/integer/ciphertext/compressed_modulus_switched_ciphertext.rs index 2e3bcf5e5..25e68f3af 100644 --- a/tfhe/src/integer/ciphertext/compressed_modulus_switched_ciphertext.rs +++ b/tfhe/src/integer/ciphertext/compressed_modulus_switched_ciphertext.rs @@ -17,15 +17,13 @@ use crate::shortint::parameters::Degree; /// /// ```rust /// use tfhe::integer::gen_keys_radix; -/// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +/// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::shortint::PBSParameters; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; -/// let (cks, sks) = gen_keys_radix::( -/// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), -/// size, -/// ); +/// let (cks, sks) = +/// gen_keys_radix::(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128.into(), size); /// /// let clear = 3u8; /// @@ -62,15 +60,13 @@ impl ParameterSetConformant for CompressedModulusSwitchedRadixCiphertext { /// /// ```rust /// use tfhe::integer::gen_keys_radix; -/// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +/// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::shortint::PBSParameters; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; -/// let (cks, sks) = gen_keys_radix::( -/// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64.into(), -/// size, -/// ); +/// let (cks, sks) = +/// gen_keys_radix::(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128.into(), size); /// /// let clear = -3i8; /// diff --git a/tfhe/src/integer/client_key/crt.rs b/tfhe/src/integer/client_key/crt.rs index ba9cf46db..76bb5ff3e 100644 --- a/tfhe/src/integer/client_key/crt.rs +++ b/tfhe/src/integer/client_key/crt.rs @@ -13,10 +13,10 @@ use tfhe_versionable::Versionize; /// /// ```rust /// use tfhe::integer::CrtClientKey; -/// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; +/// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// let basis = vec![2, 3, 5]; -/// let cks = CrtClientKey::new(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); +/// let cks = CrtClientKey::new(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let msg = 13_u64; /// diff --git a/tfhe/src/integer/client_key/mod.rs b/tfhe/src/integer/client_key/mod.rs index 6f1637491..cc2831fc4 100644 --- a/tfhe/src/integer/client_key/mod.rs +++ b/tfhe/src/integer/client_key/mod.rs @@ -132,12 +132,12 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key, that can encrypt in /// // radix and crt decomposition, where each block of the decomposition /// // have over 2 bits of message modulus. - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// ``` pub fn new

(parameter_set: P) -> Self where @@ -155,12 +155,12 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key, that can encrypt in /// // radix and crt decomposition, where each block of the decomposition /// // have over 2 bits of message modulus. - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let key = cks.into_raw_parts(); /// ``` @@ -174,12 +174,12 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key, that can encrypt in /// // radix and crt decomposition, where each block of the decomposition /// // have over 2 bits of message modulus. - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let key = cks.into_raw_parts(); /// @@ -213,9 +213,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// let num_block = 4; /// /// let msg = 167_u64; @@ -239,9 +239,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// let num_block = 4; /// /// let msg = 167_u64; @@ -314,9 +314,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// let num_block = 4; /// /// let msg = 191_u64; @@ -342,9 +342,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// let num_block = 4; /// /// let msg = 191_u64; @@ -489,9 +489,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let msg = 2_u64; /// @@ -510,11 +510,11 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let a = cks.encrypt_bool(false); /// let dec = cks.decrypt_bool(&a); @@ -545,9 +545,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::{BooleanBlock, ClientKey}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let a = cks.encrypt_one_block(1u64); /// let wrapped = BooleanBlock::new_unchecked(a); @@ -564,9 +564,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let msg = 13_u64; /// @@ -604,10 +604,10 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let msg = 27_u64; /// let basis: Vec = vec![2, 3, 5]; @@ -642,9 +642,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128); /// /// let msg = 13_u64; /// @@ -683,9 +683,9 @@ impl ClientKey { /// /// ```rust /// use tfhe::integer::ClientKey; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128); /// /// let msg = 27_u64; /// let basis: Vec = vec![2, 3, 5]; diff --git a/tfhe/src/integer/client_key/radix.rs b/tfhe/src/integer/client_key/radix.rs index ac577733e..bee882288 100644 --- a/tfhe/src/integer/client_key/radix.rs +++ b/tfhe/src/integer/client_key/radix.rs @@ -22,14 +22,11 @@ use tfhe_versionable::Versionize; /// /// ```rust /// use tfhe::integer::RadixClientKey; -/// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +/// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // 2 * 4 = 8 bits of message /// let num_block = 4; -/// let cks = RadixClientKey::new( -/// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, -/// num_block, -/// ); +/// let cks = RadixClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_block); /// /// let msg = 167_u64; /// diff --git a/tfhe/src/integer/gpu/ciphertext/boolean_value.rs b/tfhe/src/integer/gpu/ciphertext/boolean_value.rs index 8d820e8c0..abfc8365c 100644 --- a/tfhe/src/integer/gpu/ciphertext/boolean_value.rs +++ b/tfhe/src/integer/gpu/ciphertext/boolean_value.rs @@ -110,25 +110,27 @@ impl CudaBooleanBlock { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::BooleanBlock; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// # // TODO GPU DRIFT UPDATE + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; /// /// let gpu_index = 0; - /// let mut stream = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let stream = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: /// let num_blocks = 1; /// let (cks, sks) = gen_keys_radix_gpu( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + /// # // TODO GPU DRIFT UPDATE + /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, /// num_blocks, - /// &mut stream, + /// &stream, /// ); /// /// let msg1 = true; /// let ct1 = cks.encrypt_bool(msg1); /// /// // Copy to GPU - /// let d_ct1 = CudaBooleanBlock::from_boolean_block(&ct1, &mut stream); - /// let ct2 = d_ct1.to_boolean_block(&mut stream); + /// let d_ct1 = CudaBooleanBlock::from_boolean_block(&ct1, &stream); + /// let ct2 = d_ct1.to_boolean_block(&stream); /// let res = cks.decrypt_bool(&ct2); /// /// assert_eq!(msg1, res); diff --git a/tfhe/src/integer/gpu/ciphertext/compressed_ciphertext_list.rs b/tfhe/src/integer/gpu/ciphertext/compressed_ciphertext_list.rs index 38933d172..e6c037652 100644 --- a/tfhe/src/integer/gpu/ciphertext/compressed_ciphertext_list.rs +++ b/tfhe/src/integer/gpu/ciphertext/compressed_ciphertext_list.rs @@ -141,26 +141,32 @@ impl CudaCompressedCiphertextList { /// use tfhe::integer::gpu::ciphertext::compressed_ciphertext_list::CudaCompressedCiphertextListBuilder; /// use tfhe::integer::gpu::ciphertext::{CudaSignedRadixCiphertext, CudaUnsignedRadixCiphertext}; /// use tfhe::integer::gpu::gen_keys_radix_gpu; - /// use tfhe::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::{ + /// # // TODO GPU DRIFT UPDATE + /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + /// COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + /// }; /// + /// # // TODO GPU DRIFT UPDATE + /// let block_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// let compression_params = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// let num_blocks = 32; /// let streams = CudaStreams::new_multi_gpu(); /// - /// let (radix_cks, _) = gen_keys_radix_gpu(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + /// let (radix_cks, _) = gen_keys_radix_gpu(block_params, /// num_blocks, /// &streams, /// ); /// let cks = radix_cks.as_ref(); /// /// let private_compression_key = - /// cks.new_compression_private_key(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// cks.new_compression_private_key(compression_params); /// /// let (cuda_compression_key, cuda_decompression_key) = /// radix_cks.new_cuda_compression_decompression_keys(&private_compression_key, &streams); /// /// let private_compression_key = - /// cks.new_compression_private_key(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// cks.new_compression_private_key(compression_params); /// /// let (compressed_compression_key, compressed_decompression_key) = /// radix_cks.new_compressed_compression_decompression_keys(&private_compression_key); @@ -174,7 +180,7 @@ impl CudaCompressedCiphertextList { /// let ct2 = radix_cks.encrypt_signed(-2); /// let ct3 = radix_cks.encrypt_bool(true); /// - /// /// Copy to GPU + /// // Copy to GPU /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct2, &streams); /// let d_ct3 = CudaBooleanBlock::from_boolean_block(&ct3, &streams); @@ -258,24 +264,26 @@ impl CompressedCiphertextList { ///```rust /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::integer::ciphertext::CompressedCiphertextListBuilder; - /// use tfhe::integer::ClientKey; - /// use tfhe::integer::gpu::ciphertext::{CudaSignedRadixCiphertext, CudaUnsignedRadixCiphertext}; /// use tfhe::integer::gpu::ciphertext::boolean_value::CudaBooleanBlock; + /// use tfhe::integer::gpu::ciphertext::{CudaSignedRadixCiphertext, CudaUnsignedRadixCiphertext}; /// use tfhe::integer::gpu::gen_keys_radix_gpu; - /// use tfhe::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::integer::ClientKey; + /// use tfhe::shortint::parameters::{ + /// # // TODO GPU DRIFT UPDATE + /// COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + /// }; /// + /// # // TODO GPU DRIFT UPDATE + /// let block_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// let compression_params = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// let num_blocks = 32; /// let streams = CudaStreams::new_multi_gpu(); /// - /// let (radix_cks, _) = gen_keys_radix_gpu(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - /// num_blocks, - /// &streams, - /// ); + /// let (radix_cks, _) = gen_keys_radix_gpu(block_params, num_blocks, &streams); /// let cks = radix_cks.as_ref(); /// - /// let private_compression_key = - /// cks.new_compression_private_key(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let private_compression_key = cks.new_compression_private_key(compression_params); /// /// let (compressed_compression_key, compressed_decompression_key) = /// radix_cks.new_compressed_compression_decompression_keys(&private_compression_key); @@ -286,7 +294,7 @@ impl CompressedCiphertextList { /// radix_cks.parameters().message_modulus(), /// radix_cks.parameters().carry_modulus(), /// radix_cks.parameters().ciphertext_modulus(), - /// &streams + /// &streams, /// ); /// /// let compression_key = compressed_compression_key.decompress(); @@ -306,20 +314,26 @@ impl CompressedCiphertextList { /// /// assert_eq!(recovered_cuda_compressed, compressed); /// - /// let d_decompressed1: CudaUnsignedRadixCiphertext = - /// cuda_compressed.get(0, &cuda_decompression_key, &streams).unwrap().unwrap(); + /// let d_decompressed1: CudaUnsignedRadixCiphertext = cuda_compressed + /// .get(0, &cuda_decompression_key, &streams) + /// .unwrap() + /// .unwrap(); /// let decompressed1 = d_decompressed1.to_radix_ciphertext(&streams); /// let decrypted: u32 = radix_cks.decrypt(&decompressed1); /// assert_eq!(decrypted, 3_u32); /// - /// let d_decompressed2: CudaSignedRadixCiphertext = - /// cuda_compressed.get(1, &cuda_decompression_key, &streams).unwrap().unwrap(); + /// let d_decompressed2: CudaSignedRadixCiphertext = cuda_compressed + /// .get(1, &cuda_decompression_key, &streams) + /// .unwrap() + /// .unwrap(); /// let decompressed2 = d_decompressed2.to_signed_radix_ciphertext(&streams); /// let decrypted: i32 = radix_cks.decrypt_signed(&decompressed2); /// assert_eq!(decrypted, -2); /// - /// let d_decompressed3: CudaBooleanBlock = - /// cuda_compressed.get(2, &cuda_decompression_key, &streams).unwrap().unwrap(); + /// let d_decompressed3: CudaBooleanBlock = cuda_compressed + /// .get(2, &cuda_decompression_key, &streams) + /// .unwrap() + /// .unwrap(); /// let decompressed3 = d_decompressed3.to_boolean_block(&streams); /// let decrypted = radix_cks.decrypt_bool(&decompressed3); /// assert!(decrypted); @@ -520,10 +534,11 @@ mod tests { use crate::integer::ciphertext::CompressedCiphertextListBuilder; use crate::integer::gpu::gen_keys_radix_gpu; use crate::integer::{ClientKey, RadixCiphertext, RadixClientKey}; - use crate::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; use crate::shortint::parameters::{ + // TODO GPU DRIFT UPDATE + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, }; use crate::shortint::ShortintParameterSet; use rand::Rng; @@ -536,6 +551,7 @@ mod tests { const NUM_BLOCKS: usize = 32; let streams = CudaStreams::new_multi_gpu(); + // TODO GPU DRIFT UPDATE let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; let comp_params = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; @@ -560,6 +576,7 @@ mod tests { // How many uints of NUM_BLOCKS we have to push in the list to ensure it // internally has more than one packed GLWE + // TODO GPU DRIFT UPDATE const MAX_NB_MESSAGES: usize = 1 + 2 * COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 .lwe_per_glwe .0 @@ -685,19 +702,22 @@ mod tests { let streams = CudaStreams::new_multi_gpu(); for params in [ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), + PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), ] { let (radix_cks, sks) = gen_keys_radix_gpu::(params, NUM_BLOCKS, &streams); let cks = radix_cks.as_ref(); + // TODO GPU DRIFT UPDATE let private_compression_key = cks.new_compression_private_key(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); let (cuda_compression_key, cuda_decompression_key) = radix_cks .new_cuda_compression_decompression_keys(&private_compression_key, &streams); + // TODO GPU DRIFT UPDATE const MAX_NB_MESSAGES: usize = 2 * COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 .lwe_per_glwe .0 diff --git a/tfhe/src/integer/gpu/ciphertext/mod.rs b/tfhe/src/integer/gpu/ciphertext/mod.rs index db062bb12..f304704e1 100644 --- a/tfhe/src/integer/gpu/ciphertext/mod.rs +++ b/tfhe/src/integer/gpu/ciphertext/mod.rs @@ -188,17 +188,19 @@ impl CudaUnsignedRadixCiphertext { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// let size = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu( + /// # // TODO GPU DRIFT UPDATE /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, /// size, - /// &mut streams, + /// &streams, /// ); /// /// let clear: u64 = 255; @@ -206,8 +208,8 @@ impl CudaUnsignedRadixCiphertext { /// // Encrypt two messages /// let ctxt = cks.encrypt(clear); /// - /// let mut d_ctxt = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt, &mut streams); - /// let mut h_ctxt = d_ctxt.to_radix_ciphertext(&mut streams); + /// let d_ctxt = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt, &streams); + /// let h_ctxt = d_ctxt.to_radix_ciphertext(&streams); /// /// assert_eq!(h_ctxt, ctxt); /// ``` @@ -253,25 +255,27 @@ impl CudaUnsignedRadixCiphertext { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu( + /// # // TODO GPU DRIFT UPDATE /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, /// num_blocks, - /// &mut streams, + /// &streams, /// ); /// /// let msg1 = 10u32; /// let ct1 = cks.encrypt(msg1); /// /// // Copy to GPU - /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &mut streams); - /// let ct2 = d_ct1.to_radix_ciphertext(&mut streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let ct2 = d_ct1.to_radix_ciphertext(&streams); /// let msg2 = cks.decrypt(&ct2); /// /// assert_eq!(msg1, msg2); @@ -296,17 +300,19 @@ impl CudaSignedRadixCiphertext { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// let size = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu( + /// # // TODO GPU DRIFT UPDATE /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, /// size, - /// &mut streams, + /// &streams, /// ); /// /// let clear: i64 = 255; @@ -314,8 +320,8 @@ impl CudaSignedRadixCiphertext { /// // Encrypt two messages /// let ctxt = cks.encrypt_signed(clear); /// - /// let mut d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &mut streams); - /// let mut h_ctxt = d_ctxt.to_signed_radix_ciphertext(&mut streams); + /// let d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); + /// let h_ctxt = d_ctxt.to_signed_radix_ciphertext(&streams); /// /// assert_eq!(h_ctxt, ctxt); /// ``` @@ -368,25 +374,27 @@ impl CudaSignedRadixCiphertext { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu( + /// # // TODO GPU DRIFT UPDATE /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, /// num_blocks, - /// &mut streams, + /// &streams, /// ); /// /// let msg1 = 10i32; /// let ct1 = cks.encrypt_signed(msg1); /// /// // Copy to GPU - /// let d_ct1 = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct1, &mut streams); - /// let ct2 = d_ct1.to_signed_radix_ciphertext(&mut streams); + /// let d_ct1 = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct1, &streams); + /// let ct2 = d_ct1.to_signed_radix_ciphertext(&streams); /// let msg2 = cks.decrypt_signed(&ct2); /// /// assert_eq!(msg1, msg2); @@ -405,27 +413,29 @@ impl CudaRadixCiphertext { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::integer::gpu::ciphertext::{CudaIntegerRadixCiphertext, CudaSignedRadixCiphertext}; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu( + /// # // TODO GPU DRIFT UPDATE /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, /// num_blocks, - /// &mut streams, + /// &streams, /// ); /// /// let msg = 10i32; /// let ct = cks.encrypt_signed(msg); /// /// // Copy to GPU - /// let d_ct = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct, &mut streams); - /// let d_ct_copied = d_ct.duplicate(&mut streams); + /// let d_ct = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct, &streams); + /// let d_ct_copied = d_ct.duplicate(&streams); /// - /// let ct_copied = d_ct_copied.to_signed_radix_ciphertext(&mut streams); + /// let ct_copied = d_ct_copied.to_signed_radix_ciphertext(&streams); /// let msg_copied = cks.decrypt_signed(&ct_copied); /// /// assert_eq!(msg, msg_copied); diff --git a/tfhe/src/integer/gpu/mod.rs b/tfhe/src/integer/gpu/mod.rs index 32cf2ab21..d22577c8d 100644 --- a/tfhe/src/integer/gpu/mod.rs +++ b/tfhe/src/integer/gpu/mod.rs @@ -200,13 +200,15 @@ where /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::gen_keys_radix_gpu; +/// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; -/// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); +/// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// // generate the client key and the server key: /// let num_blocks = 4; -/// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &mut streams); +/// # // TODO GPU DRIFT UPDATE +/// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// ``` pub fn gen_keys_radix_gpu

( parameters_set: P, diff --git a/tfhe/src/integer/gpu/server_key/mod.rs b/tfhe/src/integer/gpu/server_key/mod.rs index 31b578677..c064c1156 100644 --- a/tfhe/src/integer/gpu/server_key/mod.rs +++ b/tfhe/src/integer/gpu/server_key/mod.rs @@ -49,16 +49,18 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::CudaServerKey; /// use tfhe::integer::ClientKey; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key: /// let cks = ClientKey::new(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); /// /// // Generate the server key: - /// let sks = CudaServerKey::new(&cks, &mut streams); + /// let sks = CudaServerKey::new(&cks, &streams); /// ``` pub fn new(cks: C, streams: &CudaStreams) -> Self where @@ -168,11 +170,13 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::CudaServerKey; /// use tfhe::integer::{ClientKey, CompressedServerKey, ServerKey}; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// let size = 4; + /// # // TODO GPU DRIFT UPDATE /// let cks = ClientKey::new(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); /// let compressed_sks = CompressedServerKey::new_radix_compressed_server_key(&cks); /// let cuda_sks = CudaServerKey::decompress_from_cpu(&compressed_sks, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/abs.rs b/tfhe/src/integer/gpu/server_key/radix/abs.rs index d381a563e..1fc9c4556 100644 --- a/tfhe/src/integer/gpu/server_key/radix/abs.rs +++ b/tfhe/src/integer/gpu/server_key/radix/abs.rs @@ -101,11 +101,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/add.rs b/tfhe/src/integer/gpu/server_key/radix/add.rs index a01a06e4d..2ba76c13e 100644 --- a/tfhe/src/integer/gpu/server_key/radix/add.rs +++ b/tfhe/src/integer/gpu/server_key/radix/add.rs @@ -36,6 +36,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; @@ -43,6 +44,7 @@ impl CudaServerKey { /// /// // Generate the client key and the server key: /// let num_blocks = 4; + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// /// let msg1 = 14; @@ -136,11 +138,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); @@ -418,11 +422,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); @@ -594,11 +600,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::{CudaSignedRadixCiphertext, CudaUnsignedRadixCiphertext}; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/bitwise_op.rs b/tfhe/src/integer/gpu/server_key/radix/bitwise_op.rs index a1f8c114c..342a904f8 100644 --- a/tfhe/src/integer/gpu/server_key/radix/bitwise_op.rs +++ b/tfhe/src/integer/gpu/server_key/radix/bitwise_op.rs @@ -28,11 +28,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -121,11 +123,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -137,7 +141,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// // Compute homomorphically a bitwise and: @@ -268,11 +272,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -284,7 +290,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// // Compute homomorphically a bitwise and: @@ -335,11 +341,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -351,7 +359,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// // Compute homomorphically a bitwise and: @@ -402,11 +410,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -418,7 +428,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// // Compute homomorphically a bitwise and: @@ -508,11 +518,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -524,7 +536,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// // Compute homomorphically a bitwise and: @@ -613,11 +625,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -629,7 +643,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// // Compute homomorphically a bitwise and: @@ -719,11 +733,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/comparison.rs b/tfhe/src/integer/gpu/server_key/radix/comparison.rs index 9b8304ffc..58622e71b 100644 --- a/tfhe/src/integer/gpu/server_key/radix/comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/comparison.rs @@ -146,11 +146,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -162,7 +164,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// let d_ct_res = sks.unchecked_eq(&d_ct1, &d_ct2, &streams); @@ -220,11 +222,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -236,7 +240,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// let d_ct_res = sks.unchecked_ne(&d_ct1, &d_ct2, &streams); @@ -319,11 +323,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -335,7 +341,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// let d_ct_res = sks.eq(&d_ct1, &d_ct2, &streams); @@ -413,11 +419,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -429,7 +437,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// let d_ct_res = sks.ne(&d_ct1, &d_ct2, &streams); @@ -477,11 +485,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -493,7 +503,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// let d_ct_res = sks.unchecked_gt(&d_ct1, &d_ct2, &streams); @@ -601,11 +611,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -617,7 +629,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// let d_ct_res = sks.unchecked_ge(&d_ct1, &d_ct2, &streams); @@ -725,11 +737,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -741,7 +755,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// let d_ct_res = sks.unchecked_lt(&d_ct1, &d_ct2, &streams); @@ -849,11 +863,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -865,7 +881,7 @@ impl CudaServerKey { /// let ct2 = cks.encrypt(msg2); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// let d_ct2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct2, &streams); /// /// let d_ct_res = sks.unchecked_le(&d_ct1, &d_ct2, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/ilog2.rs b/tfhe/src/integer/gpu/server_key/radix/ilog2.rs index 5924e3614..2acf8ce9f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/ilog2.rs +++ b/tfhe/src/integer/gpu/server_key/radix/ilog2.rs @@ -511,13 +511,15 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -526,10 +528,10 @@ impl CudaServerKey { /// // Encrypt two messages /// let ctxt = cks.encrypt_signed_radix(msg, number_of_blocks); /// - /// let mut d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); + /// let d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); /// /// // Compute homomorphically trailing zeros - /// let mut d_ct_res = sks.trailing_zeros(&d_ctxt, &streams); + /// let d_ct_res = sks.trailing_zeros(&d_ctxt, &streams); /// /// // Decrypt /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); @@ -584,13 +586,15 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -599,10 +603,10 @@ impl CudaServerKey { /// // Encrypt two messages /// let ctxt = cks.encrypt_signed_radix(msg, number_of_blocks); /// - /// let mut d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); + /// let d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); /// /// // Compute homomorphically trailing ones - /// let mut d_ct_res = sks.trailing_ones(&d_ctxt, &streams); + /// let d_ct_res = sks.trailing_ones(&d_ctxt, &streams); /// /// // Decrypt /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); @@ -657,13 +661,15 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -672,10 +678,10 @@ impl CudaServerKey { /// // Encrypt two messages /// let ctxt = cks.encrypt_signed_radix(msg, number_of_blocks); /// - /// let mut d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); + /// let d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); /// /// // Compute homomorphically leading zeros - /// let mut d_ct_res = sks.leading_zeros(&d_ctxt, &streams); + /// let d_ct_res = sks.leading_zeros(&d_ctxt, &streams); /// /// // Decrypt /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); @@ -730,13 +736,15 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -745,10 +753,10 @@ impl CudaServerKey { /// // Encrypt two messages /// let ctxt = cks.encrypt_signed_radix(msg, number_of_blocks); /// - /// let mut d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); + /// let d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); /// /// // Compute homomorphically leading ones - /// let mut d_ct_res = sks.leading_ones(&d_ctxt, &streams); + /// let d_ct_res = sks.leading_ones(&d_ctxt, &streams); /// /// // Decrypt /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); @@ -796,13 +804,15 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -811,10 +821,10 @@ impl CudaServerKey { /// // Encrypt two messages /// let ctxt = cks.encrypt_signed_radix(msg, number_of_blocks); /// - /// let mut d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); + /// let d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); /// /// // Compute homomorphically a log2 - /// let mut d_ct_res = sks.ilog2(&d_ctxt, &streams); + /// let d_ct_res = sks.ilog2(&d_ctxt, &streams); /// /// // Decrypt /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); @@ -866,13 +876,15 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -881,9 +893,9 @@ impl CudaServerKey { /// // Encrypt two messages /// let ctxt = cks.encrypt_signed_radix(msg, number_of_blocks); /// - /// let mut d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); + /// let d_ctxt = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ctxt, &streams); /// // Compute homomorphically a log2 and a check if input is valid - /// let (mut d_ct_res, mut d_is_oks) = sks.checked_ilog2(&d_ctxt, &streams); + /// let (d_ct_res, d_is_oks) = sks.checked_ilog2(&d_ctxt, &streams); /// /// // Decrypt /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/mod.rs b/tfhe/src/integer/gpu/server_key/radix/mod.rs index 69244d6ab..ef2f4114f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/mod.rs +++ b/tfhe/src/integer/gpu/server_key/radix/mod.rs @@ -72,14 +72,16 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::{gen_keys_radix, RadixCiphertext}; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// /// let d_ctxt: CudaUnsignedRadixCiphertext = @@ -122,14 +124,16 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::{gen_keys_radix, RadixCiphertext}; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// /// let d_ctxt: CudaUnsignedRadixCiphertext = @@ -441,17 +445,19 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::{CudaRadixCiphertext, CudaUnsignedRadixCiphertext}; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::IntegerCiphertext; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let num_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// - /// let mut d_ct1: CudaUnsignedRadixCiphertext = + /// let d_ct1: CudaUnsignedRadixCiphertext = /// sks.create_trivial_radix(7u64, num_blocks, &streams); /// let ct1 = d_ct1.to_radix_ciphertext(&streams); /// assert_eq!(ct1.blocks().len(), 4); @@ -462,6 +468,7 @@ impl CudaServerKey { /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); /// assert_eq!(ct_res.blocks().len(), 6); /// + /// # // TODO GPU DRIFT UPDATE /// // Decrypt /// let res: u64 = cks.decrypt(&ct_res); /// assert_eq!( @@ -534,17 +541,19 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::IntegerCiphertext; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let num_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// - /// let mut d_ct1: CudaUnsignedRadixCiphertext = + /// let d_ct1: CudaUnsignedRadixCiphertext = /// sks.create_trivial_radix(7u64, num_blocks, &streams); /// let ct1 = d_ct1.to_radix_ciphertext(&streams); /// assert_eq!(ct1.blocks().len(), 4); @@ -616,17 +625,19 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::IntegerCiphertext; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let num_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// - /// let mut d_ct1: CudaUnsignedRadixCiphertext = + /// let d_ct1: CudaUnsignedRadixCiphertext = /// sks.create_trivial_radix(119u64, num_blocks, &streams); /// let ct1 = d_ct1.to_radix_ciphertext(&streams); /// assert_eq!(ct1.blocks().len(), 4); @@ -698,17 +709,19 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::IntegerCiphertext; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let num_blocks = 4; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// - /// let mut d_ct1: CudaUnsignedRadixCiphertext = + /// let d_ct1: CudaUnsignedRadixCiphertext = /// sks.create_trivial_radix(119u64, num_blocks, &streams); /// let ct1 = d_ct1.to_radix_ciphertext(&streams); /// assert_eq!(ct1.blocks().len(), 4); @@ -1109,15 +1122,17 @@ impl CudaServerKey { /// use tfhe::integer::gpu::gen_keys_gpu; /// use tfhe::shortint::gen_keys; /// use tfhe::shortint::parameters::{ + /// # // TODO GPU DRIFT UPDATE /// PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - /// V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + /// PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, /// }; /// { + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = /// gen_keys(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu( /// PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, @@ -1134,7 +1149,7 @@ impl CudaServerKey { /// let f2 = |x: u64| x.count_ones() as u64 % 4; /// // Easy to use for generation /// let luts = sks.generate_many_lookup_table(&[&f1, &f2]); - /// let vec_res = unsafe { sks.apply_many_lookup_table_async(&d_ct.as_ref(), &luts, &streams) }; + /// let vec_res = unsafe { sks.apply_many_lookup_table_async(d_ct.as_ref(), &luts, &streams) }; /// streams.synchronize(); /// // Need to manually help Rust to iterate over them easily /// let functions: &[&dyn Fn(u64) -> u64] = &[&f1, &f2]; @@ -1149,12 +1164,13 @@ impl CudaServerKey { /// } /// } /// { + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64); + /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_gpu(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, &streams); + /// let (cks, sks) = gen_keys_gpu(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, &streams); /// let num_blocks = 2; /// let msg = 3; /// let ct = cks.encrypt_radix(msg, num_blocks); @@ -1166,7 +1182,7 @@ impl CudaServerKey { /// let f2 = |x: u64| x.count_ones() as u64 % 8; /// // Easy to use for generation /// let luts = sks.generate_many_lookup_table(&[&f1, &f2]); - /// let vec_res = unsafe { sks.apply_many_lookup_table_async(&d_ct.as_ref(), &luts, &streams) }; + /// let vec_res = unsafe { sks.apply_many_lookup_table_async(d_ct.as_ref(), &luts, &streams) }; /// streams.synchronize(); /// // Need to manually help Rust to iterate over them easily /// let functions: &[&dyn Fn(u64) -> u64] = &[&f1, &f2]; @@ -1547,18 +1563,20 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::IntegerCiphertext; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let num_blocks = 4; /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// /// let msg = -2i8; /// - /// let mut ct1 = cks.encrypt_signed(msg); + /// let ct1 = cks.encrypt_signed(msg); /// assert_eq!(ct1.blocks().len(), 4); /// let d_ct1 = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct1, &streams); /// @@ -1653,18 +1671,20 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let num_blocks = 8; /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// /// let msg = u16::MAX; /// - /// let mut ct1 = cks.encrypt(msg); + /// let ct1 = cks.encrypt(msg); /// assert_eq!(ct1.blocks().len(), num_blocks); /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// diff --git a/tfhe/src/integer/gpu/server_key/radix/mul.rs b/tfhe/src/integer/gpu/server_key/radix/mul.rs index c95aa9017..5f199ed99 100644 --- a/tfhe/src/integer/gpu/server_key/radix/mul.rs +++ b/tfhe/src/integer/gpu/server_key/radix/mul.rs @@ -18,20 +18,22 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 2; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// /// let modulus = PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 /// .message_modulus /// .0 - /// .pow(number_of_blocks as u32) as u64; + /// .pow(number_of_blocks as u32); /// let clear_1: u64 = 13 % modulus; /// let clear_2: u64 = 4 % modulus; /// @@ -39,11 +41,11 @@ impl CudaServerKey { /// let ctxt_1 = cks.encrypt_radix(clear_1, number_of_blocks); /// let ctxt_2 = cks.encrypt_radix(clear_2, number_of_blocks); /// - /// let mut d_ctxt_1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt_1, &streams); + /// let d_ctxt_1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt_1, &streams); /// let d_ctxt_2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt_2, &streams); /// /// // Compute homomorphically a multiplication - /// let mut d_ct_res = sks.unchecked_mul(&mut d_ctxt_1, &d_ctxt_2, &streams); + /// let d_ct_res = sks.unchecked_mul(&d_ctxt_1, &d_ctxt_2, &streams); /// /// // Decrypt /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); @@ -152,20 +154,22 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 2; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// /// let modulus = PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 /// .message_modulus /// .0 - /// .pow(number_of_blocks as u32) as u64; + /// .pow(number_of_blocks as u32); /// let clear_1: u64 = 13 % modulus; /// let clear_2: u64 = 4 % modulus; /// @@ -173,11 +177,11 @@ impl CudaServerKey { /// let ctxt_1 = cks.encrypt_radix(clear_1, number_of_blocks); /// let ctxt_2 = cks.encrypt_radix(clear_2, number_of_blocks); /// - /// let mut d_ctxt_1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt_1, &streams); + /// let d_ctxt_1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt_1, &streams); /// let d_ctxt_2 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt_2, &streams); /// /// // Compute homomorphically a multiplication - /// let mut d_ct_res = sks.mul(&mut d_ctxt_1, &d_ctxt_2, &streams); + /// let d_ct_res = sks.mul(&d_ctxt_1, &d_ctxt_2, &streams); /// /// // Decrypt /// let ct_res = d_ct_res.to_radix_ciphertext(&streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/neg.rs b/tfhe/src/integer/gpu/server_key/radix/neg.rs index bb1fb00ad..1f9061503 100644 --- a/tfhe/src/integer/gpu/server_key/radix/neg.rs +++ b/tfhe/src/integer/gpu/server_key/radix/neg.rs @@ -20,11 +20,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let modulus = 1 << 8; @@ -33,11 +35,11 @@ impl CudaServerKey { /// let msg = 159u64; /// /// // Encrypt a message - /// let mut ctxt = cks.encrypt(msg); - /// let mut d_ctxt = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt, &streams); + /// let ctxt = cks.encrypt(msg); + /// let d_ctxt = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt, &streams); /// /// // Compute homomorphically a negation - /// let d_res = sks.unchecked_neg(&mut d_ctxt, &streams); + /// let d_res = sks.unchecked_neg(&d_ctxt, &streams); /// let res = d_res.to_radix_ciphertext(&streams); /// /// // Decrypt @@ -93,11 +95,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let modulus = 1 << 8; @@ -106,11 +110,11 @@ impl CudaServerKey { /// let msg = 159u64; /// /// // Encrypt a message - /// let mut ctxt = cks.encrypt(msg); - /// let mut d_ctxt = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt, &streams); + /// let ctxt = cks.encrypt(msg); + /// let d_ctxt = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ctxt, &streams); /// /// // Compute homomorphically a negation - /// let d_res = sks.neg(&mut d_ctxt, &streams); + /// let d_res = sks.neg(&d_ctxt, &streams); /// let res = d_res.to_radix_ciphertext(&streams); /// /// // Decrypt diff --git a/tfhe/src/integer/gpu/server_key/radix/oprf.rs b/tfhe/src/integer/gpu/server_key/radix/oprf.rs index 1388b5d03..579f4607e 100644 --- a/tfhe/src/integer/gpu/server_key/radix/oprf.rs +++ b/tfhe/src/integer/gpu/server_key/radix/oprf.rs @@ -35,6 +35,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// use tfhe::Seed; /// @@ -42,6 +43,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -125,6 +127,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// use tfhe::Seed; /// @@ -132,6 +135,7 @@ impl CudaServerKey { /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// let size = 4; /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -226,6 +230,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// use tfhe::Seed; /// @@ -233,6 +238,7 @@ impl CudaServerKey { /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// let size = 4; /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -287,6 +293,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::CudaStreams; /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// use tfhe::Seed; /// @@ -294,6 +301,7 @@ impl CudaServerKey { /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// let size = 4; /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -569,6 +577,7 @@ pub(crate) mod test { use crate::integer::gpu::{gen_keys_gpu, CudaServerKey}; use crate::integer::{ClientKey, RadixCiphertext}; use crate::shortint::oprf::create_random_from_seed_modulus_switched; + // TODO GPU DRIFT UPDATE use crate::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; use rayon::prelude::*; use statrs::distribution::ContinuousCDF; @@ -583,6 +592,7 @@ pub(crate) mod test { fn oprf_compare_plain_ci_run_filter() { let gpu_index = 0; let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + // TODO GPU DRIFT UPDATE let (ck, gpu_sk) = gen_keys_gpu( PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams, @@ -673,6 +683,7 @@ pub(crate) mod test { let p_value_limit: f64 = 0.000_01; let gpu_index = 0; let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + // TODO GPU DRIFT UPDATE let (ck, gpu_sk) = gen_keys_gpu( PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams, diff --git a/tfhe/src/integer/gpu/server_key/radix/rotate.rs b/tfhe/src/integer/gpu/server_key/radix/rotate.rs index 069fbafe3..1cbbf6479 100644 --- a/tfhe/src/integer/gpu/server_key/radix/rotate.rs +++ b/tfhe/src/integer/gpu/server_key/radix/rotate.rs @@ -346,11 +346,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -361,8 +363,8 @@ impl CudaServerKey { /// let ct = cks.encrypt(msg); /// let rotate_ct = cks.encrypt(rotate); /// // Copy to GPU - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); - /// let mut d_rotate_ct = + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_rotate_ct = /// CudaUnsignedRadixCiphertext::from_radix_ciphertext(&rotate_ct, &streams); /// /// let d_ct_res = sks.rotate_right(&d_ct, &d_rotate_ct, &streams); @@ -500,11 +502,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -515,8 +519,8 @@ impl CudaServerKey { /// let ct = cks.encrypt(msg); /// let rotate_ct = cks.encrypt(rotate); /// // Copy to GPU - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); - /// let mut d_rotate_ct = + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_rotate_ct = /// CudaUnsignedRadixCiphertext::from_radix_ciphertext(&rotate_ct, &streams); /// /// let d_ct_res = sks.rotate_left(&d_ct, &d_rotate_ct, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/scalar_add.rs b/tfhe/src/integer/gpu/server_key/radix/scalar_add.rs index 2c7b7e87a..6826d3844 100644 --- a/tfhe/src/integer/gpu/server_key/radix/scalar_add.rs +++ b/tfhe/src/integer/gpu/server_key/radix/scalar_add.rs @@ -27,11 +27,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -40,7 +42,7 @@ impl CudaServerKey { /// let scalar = 40; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically an addition: /// let d_ct_res = sks.unchecked_scalar_add(&d_ct, scalar, &streams); @@ -134,11 +136,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -147,7 +151,7 @@ impl CudaServerKey { /// let scalar = 40; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically an addition: /// let d_ct_res = sks.scalar_add(&d_ct, scalar, &streams); @@ -284,11 +288,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::{CudaSignedRadixCiphertext, CudaUnsignedRadixCiphertext}; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/scalar_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/scalar_comparison.rs index 061af6eb1..42b5e2dae 100644 --- a/tfhe/src/integer/gpu/server_key/radix/scalar_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/scalar_comparison.rs @@ -627,13 +627,15 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::{gen_keys_radix, RadixCiphertext}; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// let size = 4; /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); /// @@ -643,7 +645,7 @@ impl CudaServerKey { /// let ct1 = cks.encrypt(msg1); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// /// let d_ct_res = sks.scalar_eq(&d_ct1, msg2, &streams); /// @@ -709,13 +711,15 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; /// use tfhe::integer::{gen_keys_radix, RadixCiphertext}; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// let size = 4; /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); /// @@ -725,7 +729,7 @@ impl CudaServerKey { /// let ct1 = cks.encrypt(msg1); /// /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// /// let d_ct_res = sks.scalar_ne(&d_ct1, msg2, &streams); /// diff --git a/tfhe/src/integer/gpu/server_key/radix/scalar_div_mod.rs b/tfhe/src/integer/gpu/server_key/radix/scalar_div_mod.rs index 15b7c595c..ea7ec3cb5 100644 --- a/tfhe/src/integer/gpu/server_key/radix/scalar_div_mod.rs +++ b/tfhe/src/integer/gpu/server_key/radix/scalar_div_mod.rs @@ -74,20 +74,26 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); + /// let (cks, sks) = gen_keys_radix_gpu( + /// PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + /// size, + /// &streams, + /// ); /// /// let msg = 30; /// let scalar = 3; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar division: /// let d_ct_res = sks.unchecked_scalar_div(&d_ct, scalar, &streams); @@ -242,11 +248,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -255,7 +263,7 @@ impl CudaServerKey { /// let scalar = 3; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar multiplication: /// let d_ct_res = sks.scalar_div(&d_ct, scalar, &streams); @@ -368,11 +376,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -381,7 +391,7 @@ impl CudaServerKey { /// let scalar = 3; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar multiplication: /// let (d_ct_q, d_ct_r) = sks.scalar_div_rem(&d_ct, scalar, &streams); @@ -482,11 +492,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -495,7 +507,7 @@ impl CudaServerKey { /// let scalar = 3; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar multiplication: /// let d_ct_res = sks.scalar_rem(&d_ct, scalar, &streams); @@ -720,11 +732,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -733,7 +747,7 @@ impl CudaServerKey { /// let scalar = -3; /// /// let ct = cks.encrypt_signed(msg); - /// let mut d_ct = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar division: /// let d_ct_res = sks.signed_scalar_div(&d_ct, scalar, &streams); @@ -835,11 +849,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -848,7 +864,7 @@ impl CudaServerKey { /// let scalar = -3; /// /// let ct = cks.encrypt_signed(msg); - /// let mut d_ct = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar division: /// let (d_ct_q, d_ct_r) = sks.signed_scalar_div_rem(&d_ct, scalar, &streams); @@ -950,11 +966,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaSignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -963,7 +981,7 @@ impl CudaServerKey { /// let scalar = -3; /// /// let ct = cks.encrypt_signed(msg); - /// let mut d_ct = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar multiplication: /// let d_ct_res = sks.signed_scalar_rem(&d_ct, scalar, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/scalar_mul.rs b/tfhe/src/integer/gpu/server_key/radix/scalar_mul.rs index f1a10bcde..0e2ba4633 100644 --- a/tfhe/src/integer/gpu/server_key/radix/scalar_mul.rs +++ b/tfhe/src/integer/gpu/server_key/radix/scalar_mul.rs @@ -24,11 +24,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -37,7 +39,7 @@ impl CudaServerKey { /// let scalar = 3; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar multiplication: /// let d_ct_res = sks.unchecked_scalar_mul(&d_ct, scalar, &streams); @@ -196,11 +198,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -209,7 +213,7 @@ impl CudaServerKey { /// let scalar = 3; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically a scalar multiplication: /// let d_ct_res = sks.scalar_mul(&d_ct, scalar, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/scalar_shift.rs b/tfhe/src/integer/gpu/server_key/radix/scalar_shift.rs index 12dcf611c..bc5d51589 100644 --- a/tfhe/src/integer/gpu/server_key/radix/scalar_shift.rs +++ b/tfhe/src/integer/gpu/server_key/radix/scalar_shift.rs @@ -112,11 +112,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -126,7 +128,7 @@ impl CudaServerKey { /// /// let ct1 = cks.encrypt(msg); /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// /// let d_ct_res = sks.unchecked_scalar_left_shift(&d_ct1, shift, &streams); /// @@ -311,11 +313,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -325,7 +329,7 @@ impl CudaServerKey { /// /// let ct1 = cks.encrypt(msg); /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// /// let d_ct_res = sks.unchecked_scalar_right_shift(&d_ct1, shift, &streams); /// @@ -404,11 +408,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -418,7 +424,7 @@ impl CudaServerKey { /// /// let ct1 = cks.encrypt(msg); /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// /// let d_ct_res = sks.scalar_right_shift(&d_ct1, shift, &streams); /// @@ -492,11 +498,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -506,7 +514,7 @@ impl CudaServerKey { /// /// let ct1 = cks.encrypt(msg); /// // Copy to GPU - /// let mut d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); + /// let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams); /// /// let d_ct_res = sks.scalar_left_shift(&d_ct1, shift, &streams); /// diff --git a/tfhe/src/integer/gpu/server_key/radix/scalar_sub.rs b/tfhe/src/integer/gpu/server_key/radix/scalar_sub.rs index 64abd9bee..035ac1948 100644 --- a/tfhe/src/integer/gpu/server_key/radix/scalar_sub.rs +++ b/tfhe/src/integer/gpu/server_key/radix/scalar_sub.rs @@ -23,11 +23,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); @@ -36,7 +38,7 @@ impl CudaServerKey { /// let scalar = 3; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically an addition: /// let d_ct_res = sks.unchecked_scalar_sub(&d_ct, scalar, &streams); @@ -108,11 +110,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); @@ -121,7 +125,7 @@ impl CudaServerKey { /// let scalar = 3; /// /// let ct = cks.encrypt(msg); - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); /// /// // Compute homomorphically an addition: /// let d_ct_res = sks.scalar_sub(&d_ct, scalar, &streams); @@ -178,11 +182,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::{CudaSignedRadixCiphertext, CudaUnsignedRadixCiphertext}; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/shift.rs b/tfhe/src/integer/gpu/server_key/radix/shift.rs index 39c6234fc..c10f36a3f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/shift.rs +++ b/tfhe/src/integer/gpu/server_key/radix/shift.rs @@ -342,11 +342,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -357,8 +359,8 @@ impl CudaServerKey { /// let ct = cks.encrypt(msg); /// let shift_ct = cks.encrypt(shift as u64); /// // Copy to GPU - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); - /// let mut d_shift_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&shift_ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_shift_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&shift_ct, &streams); /// /// let d_ct_res = sks.unchecked_right_shift(&d_ct, &d_shift_ct, &streams); /// @@ -495,11 +497,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; - /// let mut streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); + /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let size = 4; /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -510,8 +514,8 @@ impl CudaServerKey { /// let ct = cks.encrypt(msg); /// let shift_ct = cks.encrypt(shift as u64); /// // Copy to GPU - /// let mut d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); - /// let mut d_shift_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&shift_ct, &streams); + /// let d_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct, &streams); + /// let d_shift_ct = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&shift_ct, &streams); /// /// let d_ct_res = sks.left_shift(&d_ct, &d_shift_ct, &streams); /// diff --git a/tfhe/src/integer/gpu/server_key/radix/sub.rs b/tfhe/src/integer/gpu/server_key/radix/sub.rs index cb9a6e72a..0db18c525 100644 --- a/tfhe/src/integer/gpu/server_key/radix/sub.rs +++ b/tfhe/src/integer/gpu/server_key/radix/sub.rs @@ -28,11 +28,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); /// @@ -111,11 +113,13 @@ impl CudaServerKey { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); @@ -170,11 +174,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, size, &streams); @@ -183,7 +189,7 @@ impl CudaServerKey { /// let msg_2 = 181u8; /// /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg_1 as u64); + /// let ct1 = cks.encrypt(msg_1 as u64); /// let ct2 = cks.encrypt(msg_2 as u64); /// /// // Copy to GPU @@ -434,11 +440,13 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::{CudaSignedRadixCiphertext, CudaUnsignedRadixCiphertext}; /// use tfhe::integer::gpu::gen_keys_radix_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let num_blocks = 4; /// let (cks, sks) = gen_keys_radix_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, num_blocks, &streams); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_erc20.rs b/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_erc20.rs index 3d4feceac..327c9de44 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_erc20.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_erc20.rs @@ -7,12 +7,15 @@ use crate::integer::server_key::radix_parallel::tests_long_run::test_erc20::{ use crate::shortint::parameters::*; create_gpu_parameterized_test!(safe_erc20 { + // TODO GPU DRIFT UPDATE PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 }); create_gpu_parameterized_test!(whitepaper_erc20 { + // TODO GPU DRIFT UPDATE PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 }); create_gpu_parameterized_test!(no_cmux_erc20 { + // TODO GPU DRIFT UPDATE PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 }); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_random_op_sequence.rs b/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_random_op_sequence.rs index 3157c2b0e..90b67e8ce 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_random_op_sequence.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_random_op_sequence.rs @@ -10,6 +10,7 @@ use crate::shortint::parameters::*; use std::cmp::{max, min}; create_gpu_parameterized_test!(random_op_sequence { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 }); fn random_op_sequence

(param: P) diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_signed_erc20.rs b/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_signed_erc20.rs index 1137f5854..a477c5fbd 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_signed_erc20.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_signed_erc20.rs @@ -7,9 +7,11 @@ use crate::integer::server_key::radix_parallel::tests_long_run::test_signed_erc2 use crate::shortint::parameters::*; create_gpu_parameterized_test!(signed_whitepaper_erc20 { + // TODO GPU DRIFT UPDATE PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 }); create_gpu_parameterized_test!(signed_no_cmux_erc20 { + // TODO GPU DRIFT UPDATE PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 }); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_signed_random_op_sequence.rs b/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_signed_random_op_sequence.rs index 0548912b9..b53737679 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_signed_random_op_sequence.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_long_run/test_signed_random_op_sequence.rs @@ -12,6 +12,7 @@ use crate::shortint::parameters::*; use std::cmp::{max, min}; create_gpu_parameterized_test!(signed_random_op_sequence { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 }); fn signed_random_op_sequence

(param: P) diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_abs.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_abs.rs index fa2c18e82..8de418f8f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_abs.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_abs.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_abs::{ signed_default_absolute_value_test, signed_unchecked_absolute_value_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_abs); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_add.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_add.rs index bfe2dee7c..bc13c50fe 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_add.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_add.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_add::{ signed_default_add_test, signed_unchecked_add_test, signed_unchecked_overflowing_add_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_add); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_bitwise_op.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_bitwise_op.rs index 428bae54b..bf0aafe54 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_bitwise_op.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_bitwise_op.rs @@ -7,6 +7,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_bitwise_op::{ signed_default_bitxor_test, signed_unchecked_bitand_test, signed_unchecked_bitor_test, signed_unchecked_bitxor_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_bitand); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_cmux.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_cmux.rs index 732de454e..9804f0ea3 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_cmux.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_cmux.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_cmux::{ signed_default_if_then_else_test, signed_unchecked_if_then_else_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_if_then_else); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_comparison.rs index 95f32f1e7..33df97b7f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_comparison.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_comparison::{ test_signed_default_function, test_signed_default_minmax, test_signed_unchecked_function, test_signed_unchecked_minmax, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; /// This macro generates the tests for a given comparison fn @@ -44,11 +45,13 @@ macro_rules! define_gpu_signed_comparison_test_functions { // Then call our create_gpu_parameterized_test macro onto or specialized fns create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -90,21 +93,25 @@ where } create_gpu_parameterized_test!(integer_signed_unchecked_max_128_bits { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_unchecked_min_128_bits { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_max_128_bits { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_min_128_bits { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_div_mod.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_div_mod.rs index bb91ddfa1..d4c5f062b 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_div_mod.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_div_mod.rs @@ -3,6 +3,7 @@ use crate::integer::gpu::server_key::radix::tests_unsigned::{ }; use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_div_rem::signed_unchecked_div_rem_test; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_div_rem); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_ilog2.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_ilog2.rs index 444b45677..8b7266c6a 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_ilog2.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_ilog2.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_ilog2::{ default_checked_ilog2_test, default_ilog2_test, default_leading_ones_test, default_leading_zeros_test, default_trailing_ones_test, default_trailing_zeros_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_default_trailing_zeros); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_mul.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_mul.rs index 90745ec2e..8fd1aef2a 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_mul.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_mul.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_mul::{ signed_default_mul_test, signed_unchecked_mul_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_mul); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_neg.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_neg.rs index e1ad034ec..c02d6acc5 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_neg.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_neg.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_neg::{ signed_default_neg_test, signed_unchecked_neg_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_neg); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_rotate.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_rotate.rs index 16420587f..3906f3ecb 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_rotate.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_rotate.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_rotate::{ signed_default_rotate_left_test, signed_default_rotate_right_test, signed_unchecked_rotate_left_test, signed_unchecked_rotate_right_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_rotate_left); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_add.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_add.rs index 3d8e6a2b9..2ba39c25f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_add.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_add.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_scalar_add::{ signed_default_overflowing_scalar_add_test, signed_default_scalar_add_test, signed_unchecked_scalar_add_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_scalar_add); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_bitwise_op.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_bitwise_op.rs index 9a72ef6e8..5584a5156 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_bitwise_op.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_bitwise_op.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_scalar_bitwis signed_default_scalar_bitand_test, signed_default_scalar_bitor_test, signed_default_scalar_bitxor_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_default_scalar_bitand); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_comparison.rs index a46267d44..888b0856b 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_comparison.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_scalar_compar test_signed_default_scalar_function, test_signed_default_scalar_minmax, test_signed_unchecked_scalar_function, test_signed_unchecked_scalar_minmax, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; /// This macro generates the tests for a given comparison fn @@ -42,11 +43,13 @@ macro_rules! define_gpu_signed_scalar_comparison_test_functions { } create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -88,21 +91,25 @@ where } create_gpu_parameterized_test!(integer_signed_unchecked_scalar_max_i128 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_unchecked_scalar_min_i128 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_scalar_max_i128 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_signed_scalar_min_i128 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_div_mod.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_div_mod.rs index 74903dbae..fb714eaf2 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_div_mod.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_div_mod.rs @@ -3,6 +3,7 @@ use crate::integer::gpu::server_key::radix::tests_unsigned::{ }; use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_scalar_div_mod::signed_unchecked_scalar_div_rem_test; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_scalar_div_rem); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_mul.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_mul.rs index ed5428b3b..72f7e4d6f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_mul.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_mul.rs @@ -3,6 +3,7 @@ use crate::integer::gpu::server_key::radix::tests_unsigned::{ }; use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_scalar_mul::signed_unchecked_scalar_mul_test; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_scalar_mul); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_rotate.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_rotate.rs index 50caa8a59..35821abf5 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_rotate.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_rotate.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_scalar_rotate signed_default_scalar_rotate_left_test, signed_default_scalar_rotate_right_test, signed_unchecked_scalar_rotate_left_test, signed_unchecked_scalar_rotate_right_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_scalar_rotate_left); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_shift.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_shift.rs index a44d10edb..ef1c4a60d 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_shift.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_shift.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_scalar_shift: signed_default_scalar_left_shift_test, signed_default_scalar_right_shift_test, signed_unchecked_scalar_left_shift_test, signed_unchecked_scalar_right_shift_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_scalar_left_shift); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_sub.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_sub.rs index f25d09db2..79afc8911 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_sub.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_scalar_sub.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_scalar_sub::{ signed_default_overflowing_scalar_sub_test, signed_unchecked_scalar_sub_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_scalar_sub); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_shift.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_shift.rs index 79a8aa5d8..60388c4e5 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_shift.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_shift.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_shift::{ signed_default_left_shift_test, signed_default_right_shift_test, signed_unchecked_left_shift_test, signed_unchecked_right_shift_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_left_shift); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_sub.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_sub.rs index f6c947580..c11336c5b 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_sub.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_sub.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_signed::test_sub::{ signed_default_overflowing_sub_test, signed_default_sub_test, signed_unchecked_overflowing_sub_test, signed_unchecked_sub_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_sub); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_vector_comparisons.rs b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_vector_comparisons.rs index 0ffdbc5a1..63b96d927 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_vector_comparisons.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_signed/test_vector_comparisons.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_signed::test_vector_comparisons::{ default_all_eq_slices_test_case, unchecked_all_eq_slices_test_case, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_signed_unchecked_all_eq_slices_test_case); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/mod.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/mod.rs index 2aeee5da2..695d6b415 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/mod.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/mod.rs @@ -43,8 +43,9 @@ macro_rules! create_gpu_parameterized_test{ ($name:ident)=> { create_gpu_parameterized_test!($name { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_add.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_add.rs index def231ea5..0ed89ff8b 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_add.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_add.rs @@ -10,6 +10,7 @@ use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ unchecked_add_test, }; use crate::integer::server_key::radix_parallel::tests_unsigned::test_add::default_overflowing_add_test; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_add); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_bitwise_op.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_bitwise_op.rs index c5d0ee8fd..6c2f44254 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_bitwise_op.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_bitwise_op.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_bitand_test, default_bitnot_test, default_bitor_test, default_bitxor_test, unchecked_bitand_test, unchecked_bitnot_test, unchecked_bitor_test, unchecked_bitxor_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_bitnot); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_cmux.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_cmux.rs index bbd479e36..4c25c1475 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_cmux.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_cmux.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::server_key::radix::tests_unsigned::{ }; use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_unsigned::test_cmux::default_if_then_else_test; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_if_then_else); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_comparison.rs index d39d99b40..160f74382 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_comparison.rs @@ -8,6 +8,7 @@ use crate::integer::server_key::radix_parallel::tests_unsigned::test_comparison: test_default_function, test_default_minmax, test_unchecked_function, test_unchecked_minmax, }; use crate::integer::U256; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; /// This macro generates the tests for a given comparison fn /// @@ -57,16 +58,19 @@ macro_rules! define_gpu_comparison_test_functions { } create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -108,21 +112,25 @@ where } create_gpu_parameterized_test!(integer_unchecked_min_u256 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_unchecked_max_u256 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_min_u256 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_max_u256 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_div_mod.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_div_mod.rs index 1b27bd500..60c9f04a0 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_div_mod.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_div_mod.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_unsigned::test_div_mod::{ default_div_rem_test, default_div_test, default_rem_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_div); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_ilog2.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_ilog2.rs index 755f96e12..dda171cb3 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_ilog2.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_ilog2.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_unsigned::test_ilog2::{ default_checked_ilog2_test, default_ilog2_test, default_leading_ones_test, default_leading_zeros_test, default_trailing_ones_test, default_trailing_zeros_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_default_trailing_zeros); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_mul.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_mul.rs index ab0ca86cf..975c5db57 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_mul.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_mul.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_mul_test, unchecked_mul_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_mul); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_neg.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_neg.rs index 879f72480..ab1ada111 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_neg.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_neg.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_neg_test, unchecked_neg_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_neg); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_rotate.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_rotate.rs index 17c42f2ea..cfc762301 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_rotate.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_rotate.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_rotate_left_test, default_rotate_right_test, unchecked_rotate_left_test, unchecked_rotate_right_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_rotate_left); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_add.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_add.rs index 23eb0f266..18be3f5d7 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_add.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_add.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_overflowing_scalar_add_test, default_scalar_add_test, unchecked_scalar_add_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_scalar_add); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_bitwise_op.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_bitwise_op.rs index 930b1cc3d..1ac42ee5f 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_bitwise_op.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_bitwise_op.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_scalar_bitand_test, default_scalar_bitor_test, default_scalar_bitxor_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_scalar_bitand); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_comparison.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_comparison.rs index 54941aaee..2d1ca64bd 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_comparison.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_comparison.rs @@ -9,6 +9,7 @@ use crate::integer::server_key::radix_parallel::tests_unsigned::test_scalar_comp test_unchecked_scalar_minmax, }; use crate::integer::U256; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; /// This macro generates the tests for a given scalar comparison fn @@ -45,11 +46,13 @@ macro_rules! define_gpu_scalar_comparison_test_functions { } create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!([]{ + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -224,21 +227,25 @@ where } create_gpu_parameterized_test!(integer_unchecked_scalar_min_u256 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_unchecked_scalar_max_u256 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_scalar_min_u256 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, }); create_gpu_parameterized_test!(integer_scalar_max_u256 { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -252,6 +259,7 @@ define_gpu_scalar_comparison_test_functions!(gt, U256); define_gpu_scalar_comparison_test_functions!(ge, U256); create_gpu_parameterized_test!(integer_unchecked_scalar_comparisons_edge { + // TODO GPU DRIFT UPDATE PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_div_mod.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_div_mod.rs index 0d3acff7b..33b9cf181 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_div_mod.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_div_mod.rs @@ -3,6 +3,7 @@ use crate::integer::gpu::server_key::radix::tests_unsigned::{ }; use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_unsigned::test_scalar_div_mod::default_scalar_div_rem_test; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_scalar_div_rem); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_mul.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_mul.rs index 615ffb6fd..3cfdd4968 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_mul.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_mul.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_scalar_mul_test, unchecked_scalar_mul_corner_cases_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_scalar_mul); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_rotate.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_rotate.rs index a91a5e0d8..c8b097c59 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_rotate.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_rotate.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_unsigned::test_scalar_rota default_scalar_rotate_left_test, default_scalar_rotate_right_test, unchecked_scalar_rotate_left_test, unchecked_scalar_rotate_right_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_scalar_rotate_left); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_shift.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_shift.rs index 47067fdf7..2a74ad2aa 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_shift.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_shift.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_scalar_left_shift_test, default_scalar_right_shift_test, unchecked_scalar_left_shift_test, unchecked_scalar_right_shift_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_scalar_left_shift); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_sub.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_sub.rs index a5635d968..8004c276e 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_sub.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_scalar_sub.rs @@ -5,6 +5,7 @@ use crate::integer::gpu::CudaServerKey; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_scalar_sub_test, unchecked_scalar_sub_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_scalar_sub); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_shift.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_shift.rs index 7aecb1917..1824cedf7 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_shift.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_shift.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_left_shift_test, default_right_shift_test, unchecked_left_shift_test, unchecked_right_shift_test, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_left_shift); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_sub.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_sub.rs index 0fb2a88dd..b7b725834 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_sub.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_sub.rs @@ -8,6 +8,7 @@ use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ default_sub_test, unchecked_sub_test, }; use crate::integer::server_key::radix_parallel::tests_unsigned::test_sub::default_overflowing_sub_test; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_sub); diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_vector_comparisons.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_vector_comparisons.rs index 2b1c6b9cb..e5dbf626a 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_vector_comparisons.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_vector_comparisons.rs @@ -2,6 +2,7 @@ use crate::integer::gpu::server_key::radix::tests_unsigned::{ create_gpu_parameterized_test, GpuFunctionExecutor, }; use crate::integer::gpu::CudaServerKey; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use crate::integer::server_key::radix_parallel::tests_unsigned::test_vector_comparisons::{ diff --git a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_vector_find.rs b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_vector_find.rs index ae862a15b..3d67c6a92 100644 --- a/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_vector_find.rs +++ b/tfhe/src/integer/gpu/server_key/radix/tests_unsigned/test_vector_find.rs @@ -16,6 +16,7 @@ use crate::integer::server_key::radix_parallel::tests_cases_unsigned::{ unchecked_match_value_test_case, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_gpu_parameterized_test!(integer_unchecked_match_value); diff --git a/tfhe/src/integer/gpu/server_key/radix/vector_comparisons.rs b/tfhe/src/integer/gpu/server_key/radix/vector_comparisons.rs index 502be38cb..b8d50323d 100644 --- a/tfhe/src/integer/gpu/server_key/radix/vector_comparisons.rs +++ b/tfhe/src/integer/gpu/server_key/radix/vector_comparisons.rs @@ -167,6 +167,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// { @@ -175,6 +176,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -201,7 +203,7 @@ impl CudaServerKey { /// // Decrypt /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); - /// assert_eq!(is_ok, false) + /// assert!(!is_ok); /// } /// { /// let number_of_blocks = 4; @@ -209,6 +211,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -235,7 +238,7 @@ impl CudaServerKey { /// // Decrypt /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// } /// ``` pub fn all_eq_slices(&self, lhs: &[T], rhs: &[T], streams: &CudaStreams) -> CudaBooleanBlock @@ -314,6 +317,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// { /// let number_of_blocks = 4; @@ -321,6 +325,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -347,7 +352,7 @@ impl CudaServerKey { /// // Decrypt /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); - /// assert_eq!(is_ok, false) + /// assert!(!is_ok); /// } /// { /// let number_of_blocks = 4; @@ -356,6 +361,7 @@ impl CudaServerKey { /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// /// // Generate the client key and the server key: + /// # // TODO GPU DRIFT UPDATE /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// /// let mut d_ctxt_vec1 = Vec::::with_capacity(4); @@ -381,7 +387,7 @@ impl CudaServerKey { /// // Decrypt /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// } /// ``` pub fn contains_sub_slice( diff --git a/tfhe/src/integer/gpu/server_key/radix/vector_find.rs b/tfhe/src/integer/gpu/server_key/radix/vector_find.rs index d76d4a8ca..0c92a7bc1 100644 --- a/tfhe/src/integer/gpu/server_key/radix/vector_find.rs +++ b/tfhe/src/integer/gpu/server_key/radix/vector_find.rs @@ -198,6 +198,7 @@ impl CudaServerKey { /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::MatchValues; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -205,6 +206,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu( /// PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, @@ -232,7 +234,7 @@ impl CudaServerKey { /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); /// assert_eq!(res, 234u16); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// ``` pub fn match_value( &self, @@ -313,6 +315,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -320,6 +323,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = /// gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); @@ -400,6 +404,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -407,6 +412,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -427,8 +433,8 @@ impl CudaServerKey { /// // Decrypt /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); - /// assert_eq!(is_ok, true) - /// ``` + /// assert!(is_ok); + /// ``` pub fn contains(&self, cts: &[T], value: &T, streams: &CudaStreams) -> CudaBooleanBlock where T: CudaIntegerRadixCiphertext, @@ -498,6 +504,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -505,6 +512,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -523,7 +531,7 @@ impl CudaServerKey { /// // Decrypt /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// ``` pub fn contains_clear( &self, @@ -586,6 +594,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -593,6 +602,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -612,7 +622,7 @@ impl CudaServerKey { /// // Decrypt /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// ``` pub fn is_in_clears( &self, @@ -683,6 +693,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -690,6 +701,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -712,7 +724,7 @@ impl CudaServerKey { /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); /// assert_eq!(res, 3); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// ``` pub fn index_in_clears( &self, @@ -810,6 +822,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -817,6 +830,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -839,7 +853,7 @@ impl CudaServerKey { /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); /// assert_eq!(res, 1); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// ``` pub fn first_index_in_clears( &self, @@ -910,6 +924,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -917,6 +932,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -942,7 +958,7 @@ impl CudaServerKey { /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); /// assert_eq!(res, 1u16); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// ``` pub fn index_of( &self, @@ -1029,13 +1045,14 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - /// /// let number_of_blocks = 4; /// /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -1060,7 +1077,7 @@ impl CudaServerKey { /// let is_ok = cks.decrypt_bool(&check); /// /// assert_eq!(res, 1u16); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// ``` pub fn index_of_clear( &self, @@ -1160,6 +1177,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -1167,6 +1185,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -1189,8 +1208,8 @@ impl CudaServerKey { /// let check = d_check.to_boolean_block(&streams); /// let is_ok = cks.decrypt_bool(&check); /// assert_eq!(res, 1u16); - /// assert_eq!(is_ok, true) - /// ``` + /// assert!(is_ok); + /// ``` pub fn first_index_of_clear( &self, cts: &[T], @@ -1288,6 +1307,7 @@ impl CudaServerKey { /// use tfhe::core_crypto::gpu::vec::GpuIndex; /// use tfhe::integer::gpu::ciphertext::CudaUnsignedRadixCiphertext; /// use tfhe::integer::gpu::gen_keys_gpu; + /// # // TODO GPU DRIFT UPDATE /// use tfhe::shortint::parameters::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; /// /// let number_of_blocks = 4; @@ -1295,6 +1315,7 @@ impl CudaServerKey { /// let gpu_index = 0; /// let streams = CudaStreams::new_single_gpu(GpuIndex::new(gpu_index)); /// + /// # // TODO GPU DRIFT UPDATE /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys_gpu(PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, &streams); /// @@ -1321,7 +1342,7 @@ impl CudaServerKey { /// let is_ok = cks.decrypt_bool(&check); /// /// assert_eq!(res, 1u16); - /// assert_eq!(is_ok, true) + /// assert!(is_ok); /// ``` pub fn first_index_of( &self, diff --git a/tfhe/src/integer/key_switching_key/test.rs b/tfhe/src/integer/key_switching_key/test.rs index 819d1d1d9..3cb673434 100644 --- a/tfhe/src/integer/key_switching_key/test.rs +++ b/tfhe/src/integer/key_switching_key/test.rs @@ -5,16 +5,19 @@ use crate::integer::{ ClientKey, CompactPrivateKey, CompactPublicKey, CrtClientKey, IntegerCiphertext, IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey, }; -use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::{ - V0_11_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, -}; use crate::shortint::parameters::{ - ClassicPBSParameters, CompactPublicKeyEncryptionParameters, ShortintKeySwitchingParameters, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + ClassicPBSParameters, CompactPublicKeyEncryptionParameters, + ShortintKeySwitchingParameters, +}; +use crate::shortint::parameters::current_params::classic::gaussian::p_fail_2_minus_128::ks_pbs::{ + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, +}; +use crate::shortint::parameters::current_params::classic::tuniform::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +use crate::shortint::parameters::current_params::compact_public_key_only::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +use crate::shortint::parameters::current_params::key_switching::p_fail_2_minus_128::ks_pbs::{ + V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, }; #[test] @@ -22,13 +25,13 @@ fn gen_multi_keys_test_rdxinteger_to_rdxinteger_ci_run_filter() { let num_block = 4; let client_key_1 = RadixClientKey::new( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_block, ); // We generate a set of client/server keys, using the default parameters: let (client_key_2, server_key_2) = KEY_CACHE.get_from_params( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, IntegerKeyKind::Radix, ); let client_key_2 = RadixClientKey::from((client_key_2, num_block)); @@ -65,13 +68,13 @@ fn gen_multi_keys_test_crtinteger_to_crtinteger_ci_run_filter() { let basis = vec![2, 3, 5, 7, 11]; let client_key_1 = CrtClientKey::new( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, basis.clone(), ); // We generate a set of client/server keys, using the default parameters: let (client_key_2, server_key_2) = KEY_CACHE.get_from_params( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, IntegerKeyKind::CRT, ); let client_key_2 = CrtClientKey::from((client_key_2, basis)); @@ -111,13 +114,13 @@ fn gen_multi_keys_test_crtinteger_to_crtinteger_fail_ci_run_filter() { let basis = vec![2, 3, 5, 7, 11]; let (client_key_1, server_key_1) = KEY_CACHE.get_from_params( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, IntegerKeyKind::CRT, ); let client_key_1 = CrtClientKey::from((client_key_1, basis.clone())); let (client_key_2, server_key_2) = KEY_CACHE.get_from_params( - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, IntegerKeyKind::CRT, ); let client_key_2 = CrtClientKey::from((client_key_2, basis)); @@ -144,11 +147,11 @@ fn gen_multi_keys_test_crtinteger_to_crtinteger_fail_ci_run_filter() { #[test] fn gen_multi_keys_test_integer_to_integer_ci_run_filter() { // We generate a set of client keys, using the default parameters: - let client_key_1 = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + let client_key_1 = ClientKey::new(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); // We generate a set of client/server keys, using the default parameters: let (client_key_2, server_key_2) = KEY_CACHE.get_from_params( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, IntegerKeyKind::Radix, ); @@ -249,17 +252,17 @@ fn test_case_cpk_encrypt_cast_compute( #[test] fn test_cpk_encrypt_cast_to_small_compute_big_ci_run_filter() { test_case_cpk_encrypt_cast_compute( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ) } #[test] fn test_cpk_encrypt_cast_to_big_compute_big_ci_run_filter() { test_case_cpk_encrypt_cast_compute( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ) } diff --git a/tfhe/src/integer/mod.rs b/tfhe/src/integer/mod.rs index cc3b9931b..d137408bf 100755 --- a/tfhe/src/integer/mod.rs +++ b/tfhe/src/integer/mod.rs @@ -15,7 +15,7 @@ //! //! ```rust //! use tfhe::integer::gen_keys_radix; -//! use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +//! use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; //! //! //4 blocks for the radix decomposition //! let number_of_blocks = 4; @@ -24,7 +24,7 @@ //! //! // Generation of the client/server keys, using the default parameters: //! let (client_key, server_key) = gen_keys_radix( -//! V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, +//! PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, //! number_of_blocks, //! ); //! @@ -186,14 +186,11 @@ where /// /// ```rust /// use tfhe::integer::gen_keys_radix; -/// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +/// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // generate the client key and the server key: /// let num_blocks = 4; -/// let (cks, sks) = gen_keys_radix( -/// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, -/// num_blocks, -/// ); +/// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// ``` pub fn gen_keys_radix

(parameters_set: P, num_blocks: usize) -> (RadixClientKey, ServerKey) where @@ -212,11 +209,11 @@ where /// /// ```rust /// use tfhe::integer::gen_keys_crt; -/// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +/// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // generate the client key and the server key: /// let basis = vec![2, 3, 5]; -/// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, basis); +/// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, basis); /// ``` pub fn gen_keys_crt

(parameters_set: P, basis: Vec) -> (CrtClientKey, ServerKey) where diff --git a/tfhe/src/integer/oprf.rs b/tfhe/src/integer/oprf.rs index a24a8b853..f7e8285ff 100644 --- a/tfhe/src/integer/oprf.rs +++ b/tfhe/src/integer/oprf.rs @@ -13,13 +13,13 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::Seed; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let ct_res = sks.par_generate_oblivious_pseudo_random_unsigned_integer(Seed(0), size as u64); /// @@ -83,13 +83,13 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::Seed; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let random_bits_count = 3; /// @@ -164,13 +164,13 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::Seed; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let ct_res = sks.par_generate_oblivious_pseudo_random_signed_integer(Seed(0), size as u64); /// @@ -211,7 +211,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::Seed; /// /// let size = 4; @@ -219,7 +219,7 @@ impl ServerKey { /// let random_bits_count = 3; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let ct_res = sks.par_generate_oblivious_pseudo_random_signed_integer_bounded( /// Seed(0), @@ -306,11 +306,8 @@ pub(crate) mod test { let num_blocks = 2; use crate::integer::gen_keys_radix; - use crate::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; - let (ck, sk) = gen_keys_radix( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - num_blocks, - ); + use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; + let (ck, sk) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); let test_uniformity = |distinct_values: u64, f: &(dyn Fn(usize) -> u64 + Sync)| { test_uniformity(sample_count, p_value_limit, distinct_values, f) diff --git a/tfhe/src/integer/public_key/standard.rs b/tfhe/src/integer/public_key/standard.rs index de67271c6..8860b5979 100644 --- a/tfhe/src/integer/public_key/standard.rs +++ b/tfhe/src/integer/public_key/standard.rs @@ -118,10 +118,11 @@ mod tests { use crate::integer::keycache::KEY_CACHE; use crate::integer::tests::create_parameterized_test; use crate::integer::IntegerKeyKind; - use crate::shortint::parameters::*; + use crate::shortint::parameters::current_params::V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; + use crate::shortint::parameters::ClassicPBSParameters; create_parameterized_test!(integer_public_key_decompression_small { - V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128, }); fn integer_public_key_decompression_small(param: ClassicPBSParameters) { diff --git a/tfhe/src/integer/public_key/tests.rs b/tfhe/src/integer/public_key/tests.rs index 23382e67a..fc300503a 100644 --- a/tfhe/src/integer/public_key/tests.rs +++ b/tfhe/src/integer/public_key/tests.rs @@ -2,9 +2,9 @@ use crate::integer::keycache::KEY_CACHE; use crate::integer::parameters::IntegerCompactCiphertextListExpansionMode; use crate::integer::tests::create_parameterized_test; use crate::integer::{gen_keys, CompressedPublicKey, IntegerKeyKind, PublicKey, RadixCiphertext}; -use crate::shortint::parameters::classic::compact_pk::*; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; @@ -14,8 +14,8 @@ create_parameterized_test!(big_radix_encrypt_decrypt_128_bits { COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS, }, no_coverage => { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, /* PARAM_MESSAGE_3_CARRY_3_KS_PBS, Skipped as the key requires 32GB * PARAM_MESSAGE_4_CARRY_4_KS_PBS, Skipped as the key requires 550GB */ } @@ -28,8 +28,8 @@ create_parameterized_test!( COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS, }, no_coverage => { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, /* PARAM_MESSAGE_3_CARRY_3_KS_PBS, Skipped as its slow * PARAM_MESSAGE_4_CARRY_4_KS_PBS, Skipped as its slow */ } @@ -42,7 +42,7 @@ create_parameterized_test!( COVERAGE_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, }, no_coverage => { - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, } } ); @@ -53,7 +53,7 @@ create_parameterized_test!( COVERAGE_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, }, no_coverage => { - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, } } ); diff --git a/tfhe/src/integer/server_key/crt/add_crt.rs b/tfhe/src/integer/server_key/crt/add_crt.rs index 9858aa6d8..91ac11bc2 100644 --- a/tfhe/src/integer/server_key/crt/add_crt.rs +++ b/tfhe/src/integer/server_key/crt/add_crt.rs @@ -8,12 +8,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; diff --git a/tfhe/src/integer/server_key/crt/mod.rs b/tfhe/src/integer/server_key/crt/mod.rs index 3a30cac55..928569cf7 100644 --- a/tfhe/src/integer/server_key/crt/mod.rs +++ b/tfhe/src/integer/server_key/crt/mod.rs @@ -30,12 +30,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -69,12 +69,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 28; /// diff --git a/tfhe/src/integer/server_key/crt/mul_crt.rs b/tfhe/src/integer/server_key/crt/mul_crt.rs index 3e11bd206..dc1cd2158 100644 --- a/tfhe/src/integer/server_key/crt/mul_crt.rs +++ b/tfhe/src/integer/server_key/crt/mul_crt.rs @@ -8,12 +8,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 29; /// let clear_2 = 23; @@ -66,11 +66,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 29; /// let clear_2 = 29; diff --git a/tfhe/src/integer/server_key/crt/neg_crt.rs b/tfhe/src/integer/server_key/crt/neg_crt.rs index 12d6872d4..292b61992 100644 --- a/tfhe/src/integer/server_key/crt/neg_crt.rs +++ b/tfhe/src/integer/server_key/crt/neg_crt.rs @@ -12,11 +12,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear = 14_u64; /// @@ -54,11 +54,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear = 14_u64; /// diff --git a/tfhe/src/integer/server_key/crt/scalar_add_crt.rs b/tfhe/src/integer/server_key/crt/scalar_add_crt.rs index 7dd1afd20..def2c4ce5 100644 --- a/tfhe/src/integer/server_key/crt/scalar_add_crt.rs +++ b/tfhe/src/integer/server_key/crt/scalar_add_crt.rs @@ -13,12 +13,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -58,11 +58,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -95,12 +95,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -145,12 +145,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -183,12 +183,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; diff --git a/tfhe/src/integer/server_key/crt/scalar_mul_crt.rs b/tfhe/src/integer/server_key/crt/scalar_mul_crt.rs index 53eb590cb..a1ea0197c 100644 --- a/tfhe/src/integer/server_key/crt/scalar_mul_crt.rs +++ b/tfhe/src/integer/server_key/crt/scalar_mul_crt.rs @@ -13,12 +13,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 2; @@ -66,11 +66,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 2; @@ -100,12 +100,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 2; @@ -152,7 +152,7 @@ impl ServerKey { /// Computes homomorphically a multiplication between a scalar and a ciphertext. /// /// `small` means the scalar value shall fit in a __shortint block__. - /// For example, if the parameters are V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + /// For example, if the parameters are PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, /// the scalar should fit in 2 bits. /// /// The result is returned as a new ciphertext. @@ -161,12 +161,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -192,7 +192,7 @@ impl ServerKey { /// Computes homomorphically a multiplication between a scalar and a ciphertext. /// /// `small` means the scalar shall value fit in a __shortint block__. - /// For example, if the parameters are V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + /// For example, if the parameters are PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, /// the scalar should fit in 2 bits. /// /// The result is assigned to the input ciphertext @@ -201,12 +201,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; diff --git a/tfhe/src/integer/server_key/crt/scalar_sub_crt.rs b/tfhe/src/integer/server_key/crt/scalar_sub_crt.rs index 04d45e469..4a928eea8 100644 --- a/tfhe/src/integer/server_key/crt/scalar_sub_crt.rs +++ b/tfhe/src/integer/server_key/crt/scalar_sub_crt.rs @@ -13,12 +13,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 7; @@ -52,10 +52,10 @@ impl ServerKey { ///```rust /// use tfhe::integer::gen_keys_crt; /// let basis = vec![2, 3, 5]; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 7; @@ -90,12 +90,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 8; @@ -126,12 +126,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 7; @@ -161,12 +161,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 7; diff --git a/tfhe/src/integer/server_key/crt/sub_crt.rs b/tfhe/src/integer/server_key/crt/sub_crt.rs index 33e0f7b95..3f830cad4 100644 --- a/tfhe/src/integer/server_key/crt/sub_crt.rs +++ b/tfhe/src/integer/server_key/crt/sub_crt.rs @@ -12,12 +12,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 5; @@ -51,12 +51,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 5; @@ -85,12 +85,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 5; @@ -129,12 +129,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 5; diff --git a/tfhe/src/integer/server_key/crt/tests.rs b/tfhe/src/integer/server_key/crt/tests.rs index 1d1ab82b1..98fb677aa 100644 --- a/tfhe/src/integer/server_key/crt/tests.rs +++ b/tfhe/src/integer/server_key/crt/tests.rs @@ -4,6 +4,7 @@ use crate::integer::tests::create_parameterized_test_classical_params; use crate::integer::IntegerKeyKind; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; @@ -34,7 +35,7 @@ const NB_TESTS: usize = 1; const NB_TESTS_SMALLER: usize = 1; #[cfg(not(tarpaulin))] -const PARAM: ClassicPBSParameters = V0_11_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64; +const PARAM: ClassicPBSParameters = V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128; #[cfg(tarpaulin)] const PARAM: ClassicPBSParameters = COVERAGE_PARAM_MESSAGE_5_CARRY_1_KS_PBS; diff --git a/tfhe/src/integer/server_key/crt_parallel/add_crt.rs b/tfhe/src/integer/server_key/crt_parallel/add_crt.rs index b6b1536d1..3e4d094f8 100644 --- a/tfhe/src/integer/server_key/crt_parallel/add_crt.rs +++ b/tfhe/src/integer/server_key/crt_parallel/add_crt.rs @@ -10,12 +10,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -65,12 +65,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 29; /// let clear_2 = 29; diff --git a/tfhe/src/integer/server_key/crt_parallel/mod.rs b/tfhe/src/integer/server_key/crt_parallel/mod.rs index f3c00116f..dd4541277 100644 --- a/tfhe/src/integer/server_key/crt_parallel/mod.rs +++ b/tfhe/src/integer/server_key/crt_parallel/mod.rs @@ -19,12 +19,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -59,12 +59,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 28; /// diff --git a/tfhe/src/integer/server_key/crt_parallel/mul_crt.rs b/tfhe/src/integer/server_key/crt_parallel/mul_crt.rs index 2c3f1f7fd..ed24141d9 100644 --- a/tfhe/src/integer/server_key/crt_parallel/mul_crt.rs +++ b/tfhe/src/integer/server_key/crt_parallel/mul_crt.rs @@ -10,12 +10,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 29; /// let clear_2 = 23; @@ -77,11 +77,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 29; /// let clear_2 = 29; diff --git a/tfhe/src/integer/server_key/crt_parallel/neg_crt.rs b/tfhe/src/integer/server_key/crt_parallel/neg_crt.rs index e80e367d4..3f40c6e5a 100644 --- a/tfhe/src/integer/server_key/crt_parallel/neg_crt.rs +++ b/tfhe/src/integer/server_key/crt_parallel/neg_crt.rs @@ -12,11 +12,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear = 14_u64; /// @@ -52,11 +52,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear = 14_u64; /// diff --git a/tfhe/src/integer/server_key/crt_parallel/scalar_add_crt.rs b/tfhe/src/integer/server_key/crt_parallel/scalar_add_crt.rs index 53e0b3735..61dc06247 100644 --- a/tfhe/src/integer/server_key/crt_parallel/scalar_add_crt.rs +++ b/tfhe/src/integer/server_key/crt_parallel/scalar_add_crt.rs @@ -14,12 +14,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -72,12 +72,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -122,12 +122,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -164,12 +164,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; diff --git a/tfhe/src/integer/server_key/crt_parallel/scalar_mul_crt.rs b/tfhe/src/integer/server_key/crt_parallel/scalar_mul_crt.rs index 8cef398ad..24f4de1e6 100644 --- a/tfhe/src/integer/server_key/crt_parallel/scalar_mul_crt.rs +++ b/tfhe/src/integer/server_key/crt_parallel/scalar_mul_crt.rs @@ -14,12 +14,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 2; @@ -80,12 +80,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 2; @@ -132,7 +132,7 @@ impl ServerKey { /// Computes homomorphically a multiplication between a scalar and a ciphertext. /// /// `small` means the scalar value shall fit in a __shortint block__. - /// For example, if the parameters are V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + /// For example, if the parameters are PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, /// the scalar should fit in 2 bits. /// /// The result is returned as a new ciphertext. @@ -141,12 +141,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; @@ -174,7 +174,7 @@ impl ServerKey { /// Computes homomorphically a multiplication between a scalar and a ciphertext. /// /// `small` means the scalar shall value fit in a __shortint block__. - /// For example, if the parameters are V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + /// For example, if the parameters are PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, /// the scalar should fit in 2 bits. /// /// The result is assigned to the input ciphertext @@ -183,12 +183,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 14; diff --git a/tfhe/src/integer/server_key/crt_parallel/scalar_sub_crt.rs b/tfhe/src/integer/server_key/crt_parallel/scalar_sub_crt.rs index 09cd5bafa..daa92ccf8 100644 --- a/tfhe/src/integer/server_key/crt_parallel/scalar_sub_crt.rs +++ b/tfhe/src/integer/server_key/crt_parallel/scalar_sub_crt.rs @@ -14,12 +14,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 7; @@ -66,12 +66,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 8; @@ -104,12 +104,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 7; @@ -139,12 +139,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 7; diff --git a/tfhe/src/integer/server_key/crt_parallel/sub_crt.rs b/tfhe/src/integer/server_key/crt_parallel/sub_crt.rs index 7468376ec..0964cbdc0 100644 --- a/tfhe/src/integer/server_key/crt_parallel/sub_crt.rs +++ b/tfhe/src/integer/server_key/crt_parallel/sub_crt.rs @@ -11,12 +11,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 5; @@ -50,12 +50,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 5; @@ -84,12 +84,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 5; @@ -127,12 +127,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_crt; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let basis = vec![2, 3, 5]; /// let modulus: u64 = basis.iter().product(); - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// /// let clear_1 = 14; /// let clear_2 = 5; diff --git a/tfhe/src/integer/server_key/crt_parallel/tests.rs b/tfhe/src/integer/server_key/crt_parallel/tests.rs index ba0208f85..03d0df754 100644 --- a/tfhe/src/integer/server_key/crt_parallel/tests.rs +++ b/tfhe/src/integer/server_key/crt_parallel/tests.rs @@ -2,6 +2,7 @@ use crate::integer::keycache::KEY_CACHE; use crate::integer::IntegerKeyKind; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; @@ -14,7 +15,7 @@ const NB_TESTS: usize = 30; const NB_TESTS: usize = 1; #[cfg(not(tarpaulin))] -const PARAM: ClassicPBSParameters = V0_11_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64; +const PARAM: ClassicPBSParameters = V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128; #[cfg(tarpaulin)] const PARAM: ClassicPBSParameters = COVERAGE_PARAM_MESSAGE_5_CARRY_1_KS_PBS; diff --git a/tfhe/src/integer/server_key/mod.rs b/tfhe/src/integer/server_key/mod.rs index d554d85cd..d55dffe73 100644 --- a/tfhe/src/integer/server_key/mod.rs +++ b/tfhe/src/integer/server_key/mod.rs @@ -81,10 +81,10 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key: - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// // Generate the server key: /// let sks = ServerKey::new_radix_server_key(cks); @@ -134,11 +134,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::shortint::ServerKey as ShortintServerKey; /// /// // Generate the client key: - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// // Generate the shortint server key: /// let shortint_sks = ShortintServerKey::new(cks.as_ref()); @@ -165,11 +165,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::shortint::ServerKey as ShortintServerKey; /// /// // Generate the client key: - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// // Generate the shortint server key: /// let shortint_sks = ShortintServerKey::new(cks.as_ref()); @@ -340,7 +340,7 @@ mod test { fn test_compressed_server_key_max_degree() { { let cks = ClientKey::new( - crate::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, ); // msg_mod = 4, carry_mod = 4, (msg_mod * carry_mod - 1) - (carry_mod - 1) = 12 let expected_radix_max_degree = MaxDegree::new(12); @@ -357,7 +357,7 @@ mod test { { let cks = ClientKey::new( - crate::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, ); // msg_mod = 4, carry_mod = 4, msg_mod * carrymod - 1 = 15 let expected_crt_max_degree = MaxDegree::new(15); diff --git a/tfhe/src/integer/server_key/radix/add.rs b/tfhe/src/integer/server_key/radix/add.rs index 0a36a793a..528cff0b8 100644 --- a/tfhe/src/integer/server_key/radix/add.rs +++ b/tfhe/src/integer/server_key/radix/add.rs @@ -16,14 +16,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 10; /// let msg2 = 127; @@ -55,13 +52,10 @@ impl ServerKey { /// The result is assigned to the `ct_left` ciphertext. /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 28; /// let msg2 = 127; @@ -95,14 +89,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 46u64; /// let msg2 = 87u64; @@ -152,14 +143,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 41; /// let msg2 = 101; @@ -195,14 +183,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 41; /// let msg2 = 101; @@ -231,14 +216,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; diff --git a/tfhe/src/integer/server_key/radix/bitwise_op.rs b/tfhe/src/integer/server_key/radix/bitwise_op.rs index 5b0a624a7..04bc41a19 100644 --- a/tfhe/src/integer/server_key/radix/bitwise_op.rs +++ b/tfhe/src/integer/server_key/radix/bitwise_op.rs @@ -14,11 +14,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 201u64; /// let msg2 = 1u64; @@ -61,12 +61,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 46u64; /// let msg2 = 87u64; @@ -104,12 +104,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 41; /// let msg2 = 101; @@ -144,12 +144,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 41; /// let msg2 = 101; @@ -177,12 +177,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14; /// let msg2 = 97; @@ -239,11 +239,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 200; /// let msg2 = 1; @@ -289,12 +289,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 41; /// let msg2 = 101; @@ -330,12 +330,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 41; /// let msg2 = 101; @@ -364,12 +364,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14; /// let msg2 = 97; @@ -428,11 +428,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 49; /// let msg2 = 64; @@ -478,12 +478,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 41; /// let msg2 = 101; @@ -519,12 +519,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 41; /// let msg2 = 101; @@ -553,12 +553,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14; /// let msg2 = 97; @@ -610,14 +610,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 14u8; /// @@ -647,14 +644,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 14u8; /// @@ -684,14 +678,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 14u8; /// @@ -722,14 +713,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = true; /// @@ -764,6 +752,7 @@ mod tests { use crate::integer::{BooleanBlock, IntegerKeyKind}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; + use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(boolean_bitxor); diff --git a/tfhe/src/integer/server_key/radix/comparison.rs b/tfhe/src/integer/server_key/radix/comparison.rs index c4f6e770e..2152ae054 100644 --- a/tfhe/src/integer/server_key/radix/comparison.rs +++ b/tfhe/src/integer/server_key/radix/comparison.rs @@ -15,12 +15,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; @@ -145,12 +145,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; @@ -181,12 +181,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 97u64; /// let msg2 = 97u64; @@ -217,12 +217,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 237u64; /// let msg2 = 23u64; @@ -253,12 +253,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 237u64; /// let msg2 = 23u64; @@ -288,12 +288,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 237u64; /// let msg2 = 23u64; @@ -323,12 +323,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 237u64; /// let msg2 = 23u64; @@ -357,12 +357,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; @@ -410,12 +410,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; @@ -444,12 +444,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; @@ -478,12 +478,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; @@ -512,12 +512,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; @@ -546,12 +546,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; @@ -580,12 +580,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; diff --git a/tfhe/src/integer/server_key/radix/mod.rs b/tfhe/src/integer/server_key/radix/mod.rs index e192710d4..be4058c60 100644 --- a/tfhe/src/integer/server_key/radix/mod.rs +++ b/tfhe/src/integer/server_key/radix/mod.rs @@ -36,15 +36,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::{gen_keys_radix, RadixCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let ctxt: RadixCiphertext = sks.create_trivial_zero_radix(num_blocks); /// @@ -113,15 +110,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::{gen_keys_radix, RadixCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let ctxt: RadixCiphertext = sks.create_trivial_radix(212u64, num_blocks); /// @@ -149,15 +143,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 7u64; /// @@ -171,7 +162,7 @@ impl ServerKey { /// // Decrypt /// let res: u64 = cks.decrypt(&ct1); /// assert_eq!( - /// 7 * (V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 + /// 7 * (PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128 /// .message_modulus /// .0) /// .pow(added_blocks as u32), @@ -194,15 +185,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 7u64; /// @@ -216,7 +204,7 @@ impl ServerKey { /// // Decrypt /// let res: u64 = cks.decrypt(&ct_res); /// assert_eq!( - /// 7 * (V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 + /// 7 * (PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128 /// .message_modulus /// .0) /// .pow(added_blocks as u32), @@ -240,15 +228,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 7u64; /// @@ -279,15 +264,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 7u64; /// @@ -318,15 +300,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 119u64; /// @@ -352,15 +331,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 119u64; /// @@ -391,15 +367,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 119u64; /// @@ -428,15 +401,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 119u64; /// @@ -467,15 +437,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = -1i8; /// @@ -525,15 +492,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = -2i8; /// @@ -564,15 +528,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = -2i8; /// @@ -643,15 +604,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 8; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = u16::MAX; /// @@ -720,15 +678,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 7u64; /// @@ -764,15 +719,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 10; /// diff --git a/tfhe/src/integer/server_key/radix/mul.rs b/tfhe/src/integer/server_key/radix/mul.rs index 03fa09605..3ec744311 100644 --- a/tfhe/src/integer/server_key/radix/mul.rs +++ b/tfhe/src/integer/server_key/radix/mul.rs @@ -14,11 +14,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let clear_1 = 170; /// let clear_2 = 3; @@ -57,11 +57,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let clear_1 = 55; /// let clear_2 = 3; @@ -114,11 +114,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let clear_1 = 170; /// let clear_2 = 3; @@ -188,11 +188,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let clear_1 = 255; /// let clear_2 = 143; @@ -244,11 +244,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let clear_1 = 170; /// let clear_2 = 6; diff --git a/tfhe/src/integer/server_key/radix/neg.rs b/tfhe/src/integer/server_key/radix/neg.rs index 3aaa50ebd..d76bef924 100644 --- a/tfhe/src/integer/server_key/radix/neg.rs +++ b/tfhe/src/integer/server_key/radix/neg.rs @@ -62,12 +62,12 @@ impl ServerKey { /// ```rust /// // Encrypt two messages: /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let modulus = 1 << 8; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 159u64; /// @@ -123,11 +123,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 2u64; /// @@ -180,11 +180,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 1u64; /// @@ -222,12 +222,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; /// let modulus = 1 << 8; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 1; /// @@ -258,11 +258,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 1u64; /// @@ -295,11 +295,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 1u64; /// diff --git a/tfhe/src/integer/server_key/radix/scalar_add.rs b/tfhe/src/integer/server_key/radix/scalar_add.rs index e17f69b00..3f413ae89 100644 --- a/tfhe/src/integer/server_key/radix/scalar_add.rs +++ b/tfhe/src/integer/server_key/radix/scalar_add.rs @@ -16,11 +16,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 4; /// let scalar = 40; @@ -70,11 +70,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 2u64; /// let scalar = 40; @@ -122,11 +122,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 4; /// let scalar = 40; @@ -171,11 +171,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 4; /// let scalar = 40; @@ -213,11 +213,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 129; /// let scalar = 40; diff --git a/tfhe/src/integer/server_key/radix/scalar_mul.rs b/tfhe/src/integer/server_key/radix/scalar_mul.rs index d96ff544b..954249e12 100644 --- a/tfhe/src/integer/server_key/radix/scalar_mul.rs +++ b/tfhe/src/integer/server_key/radix/scalar_mul.rs @@ -83,11 +83,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 30; /// let scalar = 3; @@ -123,11 +123,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 25u64; /// let scalar1 = 3; @@ -163,11 +163,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 33; /// let scalar = 3; @@ -209,11 +209,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 33; /// let scalar = 3; @@ -241,7 +241,7 @@ impl ServerKey { /// Computes homomorphically a multiplication between a scalar and a ciphertext. /// /// `small` means the scalar value shall fit in a __shortint block__. - /// For example, if the parameters are V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + /// For example, if the parameters are PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, /// the scalar should fit in 2 bits. /// /// The result is returned as a new ciphertext. @@ -250,12 +250,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let modulus = 1 << 8; /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 13; /// let scalar = 2; @@ -284,7 +284,7 @@ impl ServerKey { /// Computes homomorphically a multiplication between a scalar and a ciphertext. /// /// `small` means the scalar shall value fit in a __shortint block__. - /// For example, if the parameters are V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + /// For example, if the parameters are PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, /// the scalar should fit in 2 bits. /// /// The result is assigned to the input ciphertext @@ -293,12 +293,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let modulus = 1 << 8; /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 9; /// let scalar = 3; @@ -325,11 +325,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 1u64; /// let power = 2; @@ -362,12 +362,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let modulus = 1 << 8; /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 230; /// let scalar = 376; diff --git a/tfhe/src/integer/server_key/radix/scalar_sub.rs b/tfhe/src/integer/server_key/radix/scalar_sub.rs index 53b0f633d..8174e2b43 100644 --- a/tfhe/src/integer/server_key/radix/scalar_sub.rs +++ b/tfhe/src/integer/server_key/radix/scalar_sub.rs @@ -30,14 +30,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 40; /// let scalar = 3; @@ -130,14 +127,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 40u64; /// let scalar = 2u64; @@ -180,14 +174,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 40; /// let scalar = 4; @@ -219,14 +210,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 232; /// let scalar = 83; @@ -260,14 +248,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 165; /// let scalar = 112; diff --git a/tfhe/src/integer/server_key/radix/shift.rs b/tfhe/src/integer/server_key/radix/shift.rs index e77b2a133..00f85bb47 100644 --- a/tfhe/src/integer/server_key/radix/shift.rs +++ b/tfhe/src/integer/server_key/radix/shift.rs @@ -13,14 +13,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 16; /// let shift = 2; @@ -63,14 +60,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 128u64; /// let shift = 2; @@ -102,14 +96,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 18u64; /// let shift = 4; @@ -209,14 +200,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 21u64; /// let shift = 2; @@ -261,14 +249,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 13u64; /// let shift = 2; diff --git a/tfhe/src/integer/server_key/radix/slice.rs b/tfhe/src/integer/server_key/radix/slice.rs index 0df05f854..d563342a7 100644 --- a/tfhe/src/integer/server_key/radix/slice.rs +++ b/tfhe/src/integer/server_key/radix/slice.rs @@ -57,14 +57,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_block = 1; @@ -104,14 +101,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_block = 1; @@ -252,14 +246,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -345,14 +336,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -391,14 +379,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -441,14 +426,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -489,14 +471,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -539,14 +518,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; diff --git a/tfhe/src/integer/server_key/radix/sub.rs b/tfhe/src/integer/server_key/radix/sub.rs index 563c7ef01..2327e7e71 100644 --- a/tfhe/src/integer/server_key/radix/sub.rs +++ b/tfhe/src/integer/server_key/radix/sub.rs @@ -16,13 +16,10 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg_1 = 12; /// let msg_2 = 10; @@ -58,14 +55,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg_1 = 128; /// let msg_2 = 99; @@ -95,14 +89,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg_1 = 182u64; /// let msg_2 = 120u64; @@ -168,14 +159,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 1u64; /// @@ -213,15 +201,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 41u8; /// let msg2 = 101u8; @@ -250,14 +235,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg_1 = 120u8; /// let msg_2 = 181u8; @@ -302,14 +284,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg_1 = 120u8; /// let msg_2 = 181u8; @@ -351,14 +330,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg_1 = 1u8; /// let msg_2 = 2u8; diff --git a/tfhe/src/integer/server_key/radix/tests.rs b/tfhe/src/integer/server_key/radix/tests.rs index ede74cb3b..184a67c20 100644 --- a/tfhe/src/integer/server_key/radix/tests.rs +++ b/tfhe/src/integer/server_key/radix/tests.rs @@ -19,6 +19,7 @@ use crate::integer::tests::{ use crate::integer::{IntegerKeyKind, RadixCiphertext, ServerKey, SignedRadixCiphertext, U256}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; @@ -57,9 +58,10 @@ create_parameterized_test!( no_coverage => { // Skip the 1_1 params for the smart add 128 bits which proved to be the slowest test in our test // suite - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 } } ); @@ -101,11 +103,12 @@ create_parameterized_test!( COVERAGE_PARAM_MESSAGE_2_CARRY_3_KS_PBS, // Test case where carry_modulus > message_modulus }, no_coverage => { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, // Test case where carry_modulus > message_modulus - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, // Test case where carry_modulus > message_modulus + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 } } ); @@ -125,9 +128,10 @@ create_parameterized_test!(integer_unchecked_min { COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }, no_coverage => { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 } }); @@ -666,7 +670,7 @@ fn integer_smart_scalar_mul_decomposition_overflow() { let mut rng = rand::thread_rng(); - let param = V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + let param = V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; let num_block = (128_f64 / (param.message_modulus.0 as f64).log(2.0)).ceil() as usize; diff --git a/tfhe/src/integer/server_key/radix_parallel/add.rs b/tfhe/src/integer/server_key/radix_parallel/add.rs index d9d9b6863..4776825f3 100644 --- a/tfhe/src/integer/server_key/radix_parallel/add.rs +++ b/tfhe/src/integer/server_key/radix_parallel/add.rs @@ -131,14 +131,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; @@ -202,14 +199,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; @@ -272,14 +266,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = u8::MAX; /// let msg2 = 1; @@ -351,14 +342,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = u8::MAX; /// let msg2 = 1; @@ -1543,12 +1531,12 @@ fn overflow_flag_preparation_lut( mod tests { use super::should_parallel_propagation_be_faster; use crate::integer::gen_keys_radix; - use crate::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; #[test] fn test_propagate_single_carry_on_empty_input_ci_run_filter() { // Parameters and num blocks do not matter here - let (_, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, 4); + let (_, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, 4); sks.propagate_single_carry_parallelized(&mut []); // The most interesting part we test is that the code does not panic diff --git a/tfhe/src/integer/server_key/radix_parallel/bitwise_op.rs b/tfhe/src/integer/server_key/radix_parallel/bitwise_op.rs index 721d1bb3b..3528f9ea3 100644 --- a/tfhe/src/integer/server_key/radix_parallel/bitwise_op.rs +++ b/tfhe/src/integer/server_key/radix_parallel/bitwise_op.rs @@ -35,14 +35,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; @@ -111,14 +108,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; @@ -206,14 +200,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; @@ -284,14 +275,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; @@ -379,14 +367,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; @@ -457,14 +442,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14; /// let msg2 = 97; @@ -536,14 +518,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 14; /// diff --git a/tfhe/src/integer/server_key/radix_parallel/cmux.rs b/tfhe/src/integer/server_key/radix_parallel/cmux.rs index 6d97190f8..4dae2291d 100644 --- a/tfhe/src/integer/server_key/radix_parallel/cmux.rs +++ b/tfhe/src/integer/server_key/radix_parallel/cmux.rs @@ -54,11 +54,11 @@ where /// ```rust /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::prelude::*; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let a = 128u8; /// let b = 55u8; @@ -121,11 +121,11 @@ impl ServerKeyDefaultCMux<&BooleanBlock, &BooleanBlock> for ServerKey { /// ```rust /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::prelude::*; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// for cond in [true, false] { /// for a in [true, false] { @@ -246,11 +246,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let a = 128u8; /// let b = 55u8; diff --git a/tfhe/src/integer/server_key/radix_parallel/mod.rs b/tfhe/src/integer/server_key/radix_parallel/mod.rs index b2e6f8585..5d1e06f89 100644 --- a/tfhe/src/integer/server_key/radix_parallel/mod.rs +++ b/tfhe/src/integer/server_key/radix_parallel/mod.rs @@ -54,14 +54,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::{gen_keys_radix, IntegerCiphertext}; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 7u64; /// @@ -200,14 +197,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 10u64; /// diff --git a/tfhe/src/integer/server_key/radix_parallel/mul.rs b/tfhe/src/integer/server_key/radix_parallel/mul.rs index 72a934e1f..ab75397ed 100644 --- a/tfhe/src/integer/server_key/radix_parallel/mul.rs +++ b/tfhe/src/integer/server_key/radix_parallel/mul.rs @@ -20,14 +20,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = 170; /// let clear_2 = 3; @@ -70,14 +67,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = 55; /// let clear_2 = 3; @@ -140,14 +134,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = 170; /// let clear_2 = 3; @@ -229,14 +220,11 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = 170; /// let clear_2 = 3; @@ -426,14 +414,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = 255; /// let clear_2 = 143; @@ -505,14 +490,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = 170; /// let clear_2 = 6; @@ -595,14 +577,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = 170; /// let clear_2 = 6; @@ -749,14 +728,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = 128u8; /// let clear_2 = 5u8; @@ -822,14 +798,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let clear_1 = -128i8; /// let clear_2 = 5i8; diff --git a/tfhe/src/integer/server_key/radix_parallel/neg.rs b/tfhe/src/integer/server_key/radix_parallel/neg.rs index 4ba323a5a..3d1c64897 100644 --- a/tfhe/src/integer/server_key/radix_parallel/neg.rs +++ b/tfhe/src/integer/server_key/radix_parallel/neg.rs @@ -10,11 +10,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 1u64; /// @@ -56,11 +56,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 1u64; /// diff --git a/tfhe/src/integer/server_key/radix_parallel/reverse_bits.rs b/tfhe/src/integer/server_key/radix_parallel/reverse_bits.rs index c8a7b4521..d0001f413 100644 --- a/tfhe/src/integer/server_key/radix_parallel/reverse_bits.rs +++ b/tfhe/src/integer/server_key/radix_parallel/reverse_bits.rs @@ -9,15 +9,12 @@ impl ServerKey { /// ///```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let num_blocks = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg = 0b10110100_u8; /// @@ -72,8 +69,8 @@ mod tests { use crate::integer::{IntegerKeyKind, RadixClientKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; + use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; - use crate::shortint::PBSParameters; use rand::prelude::*; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/rotate.rs b/tfhe/src/integer/server_key/radix_parallel/rotate.rs index dc68a2698..b411105e2 100644 --- a/tfhe/src/integer/server_key/radix_parallel/rotate.rs +++ b/tfhe/src/integer/server_key/radix_parallel/rotate.rs @@ -72,11 +72,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2; @@ -234,11 +234,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2; diff --git a/tfhe/src/integer/server_key/radix_parallel/scalar_add.rs b/tfhe/src/integer/server_key/radix_parallel/scalar_add.rs index 8b336b6a9..d8dca1538 100644 --- a/tfhe/src/integer/server_key/radix_parallel/scalar_add.rs +++ b/tfhe/src/integer/server_key/radix_parallel/scalar_add.rs @@ -119,11 +119,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 4; /// let scalar = 40; @@ -157,11 +157,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 129; /// let scalar = 40; @@ -204,11 +204,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 4; /// let scalar = 40; @@ -249,11 +249,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 129; /// let scalar = 40; diff --git a/tfhe/src/integer/server_key/radix_parallel/scalar_bitwise_op.rs b/tfhe/src/integer/server_key/radix_parallel/scalar_bitwise_op.rs index 82cc7fa05..3987668c8 100644 --- a/tfhe/src/integer/server_key/radix_parallel/scalar_bitwise_op.rs +++ b/tfhe/src/integer/server_key/radix_parallel/scalar_bitwise_op.rs @@ -74,14 +74,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14u8; /// let msg2 = 97u8; @@ -110,14 +107,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 123u8; /// let msg2 = 34u8; @@ -205,14 +199,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14u8; /// let msg2 = 97u8; @@ -241,14 +232,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 123u8; /// let msg2 = 34u8; @@ -339,14 +327,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 14u8; /// let msg2 = 97u8; @@ -375,14 +360,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg1 = 123u8; /// let msg2 = 34u8; diff --git a/tfhe/src/integer/server_key/radix_parallel/scalar_comparison.rs b/tfhe/src/integer/server_key/radix_parallel/scalar_comparison.rs index 8635cc92f..b43d8d24f 100644 --- a/tfhe/src/integer/server_key/radix_parallel/scalar_comparison.rs +++ b/tfhe/src/integer/server_key/radix_parallel/scalar_comparison.rs @@ -370,12 +370,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let size = 4; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg1 = 14u64; /// let msg2 = 97u64; diff --git a/tfhe/src/integer/server_key/radix_parallel/scalar_mul.rs b/tfhe/src/integer/server_key/radix_parallel/scalar_mul.rs index b323f9f00..fea3c67a3 100644 --- a/tfhe/src/integer/server_key/radix_parallel/scalar_mul.rs +++ b/tfhe/src/integer/server_key/radix_parallel/scalar_mul.rs @@ -91,12 +91,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let modulus = 1 << 8; /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 230; /// let scalar = 376; @@ -149,12 +149,12 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let modulus = 1 << 8; /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 230; /// let scalar = 376; diff --git a/tfhe/src/integer/server_key/radix_parallel/scalar_rotate.rs b/tfhe/src/integer/server_key/radix_parallel/scalar_rotate.rs index c75c50f06..416838fc8 100644 --- a/tfhe/src/integer/server_key/radix_parallel/scalar_rotate.rs +++ b/tfhe/src/integer/server_key/radix_parallel/scalar_rotate.rs @@ -20,11 +20,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2; @@ -61,11 +61,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2; @@ -110,11 +110,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2; @@ -148,11 +148,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2; @@ -197,11 +197,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2; @@ -244,11 +244,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2; @@ -351,11 +351,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2u32; @@ -392,11 +392,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2u32; @@ -441,11 +441,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2u32; @@ -479,11 +479,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2u32; @@ -528,11 +528,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2u32; @@ -575,11 +575,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128u8; /// let n = 2u32; diff --git a/tfhe/src/integer/server_key/radix_parallel/scalar_shift.rs b/tfhe/src/integer/server_key/radix_parallel/scalar_shift.rs index 77a2da1f3..5aa775544 100644 --- a/tfhe/src/integer/server_key/radix_parallel/scalar_shift.rs +++ b/tfhe/src/integer/server_key/radix_parallel/scalar_shift.rs @@ -26,11 +26,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128; /// let shift = 2; @@ -69,11 +69,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 18; /// let shift = 4; @@ -374,11 +374,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128; /// let shift = 2; @@ -419,11 +419,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 18; /// let shift = 4; @@ -470,11 +470,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 21; /// let shift = 2; @@ -519,11 +519,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 13; /// let shift = 2; @@ -648,11 +648,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 21; /// let shift = 2; @@ -693,11 +693,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 13; /// let shift = 2; diff --git a/tfhe/src/integer/server_key/radix_parallel/scalar_sub.rs b/tfhe/src/integer/server_key/radix_parallel/scalar_sub.rs index 64f64d563..3155f9eaa 100644 --- a/tfhe/src/integer/server_key/radix_parallel/scalar_sub.rs +++ b/tfhe/src/integer/server_key/radix_parallel/scalar_sub.rs @@ -13,11 +13,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 165; /// let scalar = 112; @@ -70,11 +70,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 165; /// let scalar = 112; diff --git a/tfhe/src/integer/server_key/radix_parallel/shift.rs b/tfhe/src/integer/server_key/radix_parallel/shift.rs index 249f9fa55..d265cb9d9 100644 --- a/tfhe/src/integer/server_key/radix_parallel/shift.rs +++ b/tfhe/src/integer/server_key/radix_parallel/shift.rs @@ -120,11 +120,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 128; /// let shift = 2; @@ -268,11 +268,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg = 21; /// let shift = 2; diff --git a/tfhe/src/integer/server_key/radix_parallel/slice.rs b/tfhe/src/integer/server_key/radix_parallel/slice.rs index a9b8630f2..b66695011 100644 --- a/tfhe/src/integer/server_key/radix_parallel/slice.rs +++ b/tfhe/src/integer/server_key/radix_parallel/slice.rs @@ -58,14 +58,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -160,14 +157,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -206,14 +200,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -258,14 +249,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -307,14 +295,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; @@ -357,14 +342,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg: u64 = 225; /// let start_bit = 3; diff --git a/tfhe/src/integer/server_key/radix_parallel/sub.rs b/tfhe/src/integer/server_key/radix_parallel/sub.rs index dd367042f..41a0460dd 100644 --- a/tfhe/src/integer/server_key/radix_parallel/sub.rs +++ b/tfhe/src/integer/server_key/radix_parallel/sub.rs @@ -14,11 +14,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg_1 = 120u8; /// let msg_2 = 181u8; @@ -65,11 +65,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg_1 = 120u8; /// let msg_2 = 181u8; @@ -121,11 +121,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg_1 = 120u8; /// let msg_2 = 181u8; @@ -165,11 +165,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let size = 4; - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, size); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, size); /// /// let msg_1 = 120u8; /// let msg_2 = 181u8; @@ -231,14 +231,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg_1 = 1u8; /// let msg_2 = 255u8; @@ -723,14 +720,11 @@ impl ServerKey { /// /// ```rust /// use tfhe::integer::gen_keys_radix; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // We have 4 * 2 = 8 bits of message /// let num_blocks = 4; - /// let (cks, sks) = gen_keys_radix( - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - /// num_blocks, - /// ); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, num_blocks); /// /// let msg_1 = i8::MIN; /// let msg_2 = 1; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_erc20.rs b/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_erc20.rs index fee94e8cc..1b3e6e409 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_erc20.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_erc20.rs @@ -13,16 +13,16 @@ use rand::Rng; use std::sync::Arc; create_parameterized_test!(safe_erc20 { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 }); create_parameterized_test!(whitepaper_erc20 { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 }); create_parameterized_test!(no_cmux_erc20 { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 }); create_parameterized_test!(overflow_erc20 { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 }); fn safe_erc20

(param: P) diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_random_op_sequence.rs b/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_random_op_sequence.rs index 4d70cfc34..b6432a025 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_random_op_sequence.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_random_op_sequence.rs @@ -12,7 +12,7 @@ use std::cmp::{max, min}; use std::sync::Arc; create_parameterized_test!(random_op_sequence { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 }); pub(crate) type BinaryOpExecutor = diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_signed_erc20.rs b/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_signed_erc20.rs index ac5af334b..098fca0c1 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_signed_erc20.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_signed_erc20.rs @@ -14,10 +14,10 @@ use rand::Rng; use std::sync::Arc; create_parameterized_test!(whitepaper_erc20 { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 }); create_parameterized_test!(no_cmux_erc20 { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 }); fn whitepaper_erc20

(param: P) diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_signed_random_op_sequence.rs b/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_signed_random_op_sequence.rs index 44c77314d..507dd473f 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_signed_random_op_sequence.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_long_run/test_signed_random_op_sequence.rs @@ -14,7 +14,7 @@ use std::cmp::{max, min}; use std::sync::Arc; create_parameterized_test!(random_op_sequence { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 }); pub(crate) type SignedBinaryOpExecutor = Box< diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/mod.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/mod.rs index 2c16caf4c..7e1a8aacb 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/mod.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/mod.rs @@ -31,6 +31,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::IntegerKeyKind; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use itertools::{iproduct, izip}; use rand::prelude::ThreadRng; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/modulus_switch_compression.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/modulus_switch_compression.rs index 9438cffa5..6ad50f973 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/modulus_switch_compression.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/modulus_switch_compression.rs @@ -2,6 +2,7 @@ use crate::integer::gen_keys_radix; use crate::integer::tests::create_parameterized_test; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_abs.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_abs.rs index 27f0a8f9f..ece64344c 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_abs.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_abs.rs @@ -10,6 +10,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_add.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_add.rs index 568f8125c..272d0fbde 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_add.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_add.rs @@ -15,6 +15,7 @@ use crate::integer::{ }; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; @@ -30,9 +31,10 @@ create_parameterized_test!( no_coverage => { // Requires 4 bits, so 1_1 parameters are not supported // until they get their own version of the algorithm - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -57,9 +59,10 @@ create_parameterized_test!( no_coverage => { // Requires 4 bits, so 1_1 parameters are not supported // until they get their own version of the algorithm - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_bitwise_op.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_bitwise_op.rs index 9e0f82ccf..5af12dac3 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_bitwise_op.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_bitwise_op.rs @@ -11,6 +11,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_cmux.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_cmux.rs index 9c81cf8c2..29cc9dabe 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_cmux.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_cmux.rs @@ -10,19 +10,22 @@ use crate::integer::{ }; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; create_parameterized_test!(integer_signed_unchecked_if_then_else { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_default_if_then_else { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); fn integer_signed_unchecked_if_then_else

(param: P) diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_comparison.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_comparison.rs index d5880d308..31524398c 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_comparison.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_comparison.rs @@ -9,7 +9,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; -use crate::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::distributions::Standard; use rand::prelude::*; @@ -351,24 +351,26 @@ macro_rules! define_signed_comparison_test_functions { { // Non parallelized does not support 1_1 - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -377,43 +379,46 @@ macro_rules! define_signed_comparison_test_functions { { // Non parallelized does not support PARAM_MESSAGE_1_CARRY_1_KS_PBS, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as smart test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as smart test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -715,40 +720,44 @@ mod no_coverage { create_parameterized_test!(integer_signed_unchecked_max_parallelized_128_bits); create_parameterized_test!(integer_signed_unchecked_min_parallelized_128_bits); create_parameterized_test!(integer_signed_smart_max_parallelized_128_bits { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_smart_min_parallelized_128_bits { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_max_parallelized_128_bits { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_min_parallelized_128_bits { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); define_signed_comparison_test_functions!(eq, i128); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_count_zeros_ones.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_count_zeros_ones.rs index 45fb323fa..71b63fc56 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_count_zeros_ones.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_count_zeros_ones.rs @@ -7,9 +7,8 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{ IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey, SignedRadixCiphertext, }; -use crate::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; -use crate::shortint::PBSParameters; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_div_rem.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_div_rem.rs index f7cb2debc..9d30f1959 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_div_rem.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_div_rem.rs @@ -10,6 +10,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; @@ -22,9 +23,10 @@ create_parameterized_test!( }, no_coverage => { // Does not support 1_1 - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -40,9 +42,10 @@ create_parameterized_test!( }, no_coverage => { // Does not support 1_1 - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_ilog2.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_ilog2.rs index 098e4e817..7119b9e8e 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_ilog2.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_ilog2.rs @@ -13,6 +13,7 @@ use crate::integer::{ }; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use crate::shortint::PBSParameters; use rand::Rng; @@ -25,9 +26,10 @@ create_parameterized_test!(integer_signed_default_leading_ones); create_parameterized_test!(integer_signed_default_ilog2); create_parameterized_test!(integer_signed_default_checked_ilog2 { // uses comparison so 1_1 parameters are not supported - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_mul.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_mul.rs index bf967d075..c85f9ae87 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_mul.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_mul.rs @@ -11,6 +11,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; @@ -25,9 +26,10 @@ create_parameterized_test!( }, no_coverage => { // Uses comparisons internally, so no 1_1 - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_neg.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_neg.rs index 92daa9b3a..b20dc114c 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_neg.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_neg.rs @@ -10,6 +10,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_rotate.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_rotate.rs index 642bbc21d..ce3409651 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_rotate.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_rotate.rs @@ -13,6 +13,7 @@ use crate::integer::{ }; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_add.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_add.rs index f9642d691..d7e0fd51a 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_add.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_add.rs @@ -13,6 +13,7 @@ use crate::integer::{ }; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_bitwise_op.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_bitwise_op.rs index f13494cc7..18ed2d218 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_bitwise_op.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_bitwise_op.rs @@ -10,6 +10,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_comparison.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_comparison.rs index 02604e7f2..650e587ba 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_comparison.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_comparison.rs @@ -9,6 +9,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey, I256}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::distributions::Standard; use rand::prelude::*; @@ -267,13 +268,14 @@ macro_rules! define_signed_scalar_comparison_test_functions { create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -281,15 +283,16 @@ macro_rules! define_signed_scalar_comparison_test_functions { create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as smart test might overflow values // and when using 3_3 to represent 128 we actually have more than 128 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -297,15 +300,16 @@ macro_rules! define_signed_scalar_comparison_test_functions { create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 128 we actually have more than 128 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -610,52 +614,58 @@ mod no_coverage { } create_parameterized_test!(integer_signed_unchecked_scalar_max_parallelized_i128 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_unchecked_scalar_min_parallelized_i128 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_smart_scalar_max_parallelized_i128 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_smart_scalar_min_parallelized_i128 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_scalar_max_parallelized_i128 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_signed_scalar_min_parallelized_i128 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); define_signed_scalar_comparison_test_functions!(eq, i128); @@ -666,12 +676,13 @@ mod no_coverage { define_signed_scalar_comparison_test_functions!(ge, i128); create_parameterized_test!(integer_signed_is_scalar_out_of_bounds { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as the test relies on the ciphertext to encrypt 128bits // but with param 3_3 we actually encrypt more that 128bits - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, }); } diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_div_mod.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_div_mod.rs index 383f4c55f..bdd79481f 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_div_mod.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_div_mod.rs @@ -10,6 +10,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use itertools::iproduct; use rand::prelude::*; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_mul.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_mul.rs index 005fba649..743aedeb8 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_mul.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_mul.rs @@ -8,6 +8,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_rotate.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_rotate.rs index 4dd93e9ec..94d1e78cc 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_rotate.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_rotate.rs @@ -11,6 +11,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_shift.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_shift.rs index d6c035b6a..d39fa359c 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_shift.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_shift.rs @@ -11,6 +11,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_sub.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_sub.rs index a2b3c9250..9c29ffd16 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_sub.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_scalar_sub.rs @@ -13,6 +13,7 @@ use crate::integer::{ }; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_shift.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_shift.rs index 5a3fc4c5f..9eb3b8f0f 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_shift.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_shift.rs @@ -13,6 +13,7 @@ use crate::integer::{ }; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_sub.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_sub.rs index 34ce53228..4e50f27a9 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_sub.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_sub.rs @@ -15,6 +15,7 @@ use crate::integer::{ }; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; @@ -31,9 +32,10 @@ create_parameterized_test!(integer_signed_default_overflowing_sub_parallel { COVERAGE_PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS }, no_coverage => { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_vector_comparisons.rs b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_vector_comparisons.rs index 2e27580b2..079790186 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_vector_comparisons.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_signed/test_vector_comparisons.rs @@ -4,6 +4,7 @@ use crate::integer::server_key::radix_parallel::tests_unsigned::{CpuFunctionExec use crate::integer::{ BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey, SignedRadixCiphertext, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/mod.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/mod.rs index 20e13183e..152ae5db8 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/mod.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/mod.rs @@ -32,6 +32,7 @@ use crate::integer::{IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey} use crate::shortint::ciphertext::MaxDegree; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::prelude::ThreadRng; use rand::Rng; @@ -439,9 +440,10 @@ create_parameterized_test!( }, no_coverage => { // This algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -457,9 +459,10 @@ create_parameterized_test!( }, no_coverage => { // This algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -476,9 +479,10 @@ create_parameterized_test!( }, no_coverage => { // This algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -494,9 +498,10 @@ create_parameterized_test!( }, no_coverage => { // This algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -514,11 +519,12 @@ create_parameterized_test!( COVERAGE_PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS, }, no_coverage => { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, // Test case where carry_modulus > message_modulus - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, // Test case where carry_modulus > message_modulus + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/modulus_switch_compression.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/modulus_switch_compression.rs index fa87f4436..7d8d37772 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/modulus_switch_compression.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/modulus_switch_compression.rs @@ -2,6 +2,7 @@ use crate::integer::gen_keys_radix; use crate::integer::tests::create_parameterized_test; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_add.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_add.rs index 68d4edf01..b58b63dd0 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_add.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_add.rs @@ -12,6 +12,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; @@ -29,9 +30,10 @@ create_parameterized_test!(integer_advanced_overflowing_add_assign_with_carry_at COVERAGE_PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS }, no_coverage => { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -45,9 +47,10 @@ create_parameterized_test!(integer_extensive_trivial_overflowing_advanced_add_as COVERAGE_PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS }, no_coverage => { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_bitwise_op.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_bitwise_op.rs index f4e8ca3f0..a6e154c6f 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_bitwise_op.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_bitwise_op.rs @@ -8,6 +8,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_smart_bitand); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_cmux.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_cmux.rs index 0d9988b49..f61b04a8b 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_cmux.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_cmux.rs @@ -8,6 +8,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_comparison.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_comparison.rs index 1a9598562..f1737d1b0 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_comparison.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_comparison.rs @@ -8,6 +8,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey, U256}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::distributions::Standard; use rand::prelude::*; @@ -320,23 +321,25 @@ macro_rules! define_comparison_test_functions { { // Non parallelized does not support 1_1 - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -345,43 +348,46 @@ macro_rules! define_comparison_test_functions { { // Non parallelized does not support 1_1 - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as smart test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as smart test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -663,28 +669,32 @@ mod no_coverage { create_parameterized_test!(integer_unchecked_min_parallelized_u256); create_parameterized_test!(integer_unchecked_max_parallelized_u256); create_parameterized_test!(integer_smart_min_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // No test for 3_3, see define_comparison_test_functions macro - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_smart_max_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // No test for 3_3, see define_comparison_test_functions macro - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_min_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // No test for 3_3, see define_comparison_test_functions macro - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_max_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // No test for 3_3, see define_comparison_test_functions macro - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); define_comparison_test_functions!(eq, U256); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_count_zeros_ones.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_count_zeros_ones.rs index 9c4f3816a..b3badbeaf 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_count_zeros_ones.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_count_zeros_ones.rs @@ -5,12 +5,11 @@ use crate::integer::server_key::radix_parallel::tests_unsigned::{ }; use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; -use crate::shortint::PBSParameters; +use crate::shortint::parameters::current_params::*; +use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; -use crate::shortint::parameters::*; - create_parameterized_test!(integer_extensive_trivial_default_count_zeros_ones); create_parameterized_test!(integer_default_count_zeros_ones); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_div_mod.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_div_mod.rs index 47fc9c8fa..7c61dd6f9 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_div_mod.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_div_mod.rs @@ -7,6 +7,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; @@ -20,9 +21,10 @@ create_parameterized_test!( no_coverage => { // Due to the use of comparison, // this algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -39,9 +41,10 @@ create_parameterized_test!( no_coverage => { // Due to the use of comparison, // this algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -58,9 +61,10 @@ create_parameterized_test!( no_coverage => { // Due to the use of comparison, // this algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -77,9 +81,10 @@ create_parameterized_test!( no_coverage => { // Due to the use of comparison, // this algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -96,9 +101,10 @@ create_parameterized_test!( no_coverage => { // Due to the use of comparison, // this algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -115,9 +121,10 @@ create_parameterized_test!( no_coverage => { // Due to the use of comparison, // this algorithm requires 3 bits - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_ilog2.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_ilog2.rs index a354bb0d0..132bf7659 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_ilog2.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_ilog2.rs @@ -8,6 +8,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; @@ -19,9 +20,10 @@ create_parameterized_test!(integer_default_leading_ones); create_parameterized_test!(integer_default_ilog2); create_parameterized_test!(integer_default_checked_ilog2 { // This uses comparisons, so require more than 1 bit - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_mul.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_mul.rs index 70efe3b23..a285d6593 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_mul.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_mul.rs @@ -8,6 +8,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_unchecked_mul_corner_cases); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_neg.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_neg.rs index c939f3386..8e950c1ea 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_neg.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_neg.rs @@ -11,6 +11,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_rotate.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_rotate.rs index ec252312a..16982db43 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_rotate.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_rotate.rs @@ -7,6 +7,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_unchecked_rotate_right); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_add.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_add.rs index d81608da2..463e3ef3b 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_add.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_add.rs @@ -6,6 +6,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_smart_scalar_add); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_bitwise_op.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_bitwise_op.rs index 926d39406..3a42d1bb8 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_bitwise_op.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_bitwise_op.rs @@ -6,6 +6,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_default_scalar_bitand); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_comparison.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_comparison.rs index e608a697e..ea5be6f09 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_comparison.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_comparison.rs @@ -8,6 +8,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey, I256, U256}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::distributions::Standard; use rand::prelude::*; @@ -245,13 +246,14 @@ macro_rules! define_scalar_comparison_test_functions { create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -259,14 +261,15 @@ macro_rules! define_scalar_comparison_test_functions { create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as smart test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -274,14 +277,15 @@ macro_rules! define_scalar_comparison_test_functions { create_parameterized_test!([] { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as default test might overflow values // and when using 3_3 to represent 256 we actually have more than 256 bits // of message so the overflow behaviour is not the same, leading to false negatives - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, #[cfg(tarpaulin)] COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }); @@ -713,41 +717,47 @@ mod no_coverage { } create_parameterized_test!(integer_unchecked_scalar_min_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_unchecked_scalar_max_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_smart_scalar_min_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // No test for 3_3, see define_scalar_comparison_test_functions macro - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_smart_scalar_max_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // No test for 3_3, see define_scalar_comparison_test_functions macro - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_scalar_min_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // No test for 3_3, see define_scalar_comparison_test_functions macro - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_scalar_max_parallelized_u256 { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // No test for 3_3, see define_scalar_comparison_test_functions macro - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); define_scalar_comparison_test_functions!(eq, U256); @@ -758,25 +768,28 @@ mod no_coverage { define_scalar_comparison_test_functions!(ge, U256); create_parameterized_test!(integer_unchecked_scalar_comparisons_edge { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_is_scalar_out_of_bounds { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // We don't use PARAM_MESSAGE_3_CARRY_3_KS_PBS, // as the test relies on the ciphertext to encrypt 128bits // but with param 3_3 we actually encrypt more that 128bits - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 }); create_parameterized_test!(integer_comparisons_for_empty_blocks { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, }); } diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_div_mod.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_div_mod.rs index 4f985d231..ebf77a5d3 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_div_mod.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_div_mod.rs @@ -8,6 +8,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::prelude::*; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_mul.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_mul.rs index d44038920..415fcd3f5 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_mul.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_mul.rs @@ -7,6 +7,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!( @@ -15,8 +16,8 @@ create_parameterized_test!( COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS, }, no_coverage => { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, } } ); @@ -27,7 +28,7 @@ create_parameterized_test!( COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS, }, no_coverage => { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, } } ); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_rotate.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_rotate.rs index 1b99a7342..3cca37517 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_rotate.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_rotate.rs @@ -7,6 +7,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_shift.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_shift.rs index f5d250944..d6594f377 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_shift.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_shift.rs @@ -7,6 +7,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_unchecked_scalar_left_shift); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_sub.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_sub.rs index bb5944226..b9f3832cd 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_sub.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_scalar_sub.rs @@ -6,6 +6,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_smart_scalar_sub); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_shift.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_shift.rs index d583bfe20..f195ec246 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_shift.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_shift.rs @@ -7,6 +7,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::ServerKey; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_unchecked_left_shift); diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_slice.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_slice.rs index 3eb5b265f..cc8375a58 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_slice.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_slice.rs @@ -14,6 +14,7 @@ use crate::integer::{IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey} use crate::prelude::CastFrom; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use super::{nb_tests_for_params, CpuFunctionExecutor, FunctionExecutor, PBSParameters, NB_CTXT}; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sub.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sub.rs index 4f2cf7655..efd6a67d7 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sub.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sub.rs @@ -11,6 +11,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; @@ -29,9 +30,10 @@ create_parameterized_test!(integer_advanced_sub_assign_with_borrow_at_least_4_bi COVERAGE_PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS }, no_coverage => { - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sum.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sum.rs index efac6dc09..b605c5231 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sum.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_sum.rs @@ -7,6 +7,7 @@ use crate::integer::tests::create_parameterized_test; use crate::integer::{IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey}; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; use std::sync::Arc; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_vector_comparisons.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_vector_comparisons.rs index debd4cc21..874edaa17 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_vector_comparisons.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_vector_comparisons.rs @@ -7,6 +7,7 @@ use crate::integer::{ BooleanBlock, IntegerKeyKind, IntegerRadixCiphertext, RadixCiphertext, RadixClientKey, ServerKey, }; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::distributions::uniform::{SampleRange, SampleUniform}; use std::ops::Range; diff --git a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_vector_find.rs b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_vector_find.rs index 6ff92f5a7..9f0dcb7ff 100644 --- a/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_vector_find.rs +++ b/tfhe/src/integer/server_key/radix_parallel/tests_unsigned/test_vector_find.rs @@ -15,6 +15,7 @@ use rand::prelude::*; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; create_parameterized_test!(integer_unchecked_match_value); diff --git a/tfhe/src/integer/tests.rs b/tfhe/src/integer/tests.rs index 80ace01e7..297b3031d 100644 --- a/tfhe/src/integer/tests.rs +++ b/tfhe/src/integer/tests.rs @@ -23,10 +23,11 @@ macro_rules! create_parameterized_test { COVERAGE_PARAM_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_2_KS_PBS }, no_coverage => { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, @@ -65,10 +66,11 @@ macro_rules! create_parameterized_test_classical_params { COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS }, no_coverage => { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 is too slow for 4_4, it is estimated to be 2x slower + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64 } }); }; diff --git a/tfhe/src/integer/wopbs/mod.rs b/tfhe/src/integer/wopbs/mod.rs index 40a620bd2..bcc490583 100644 --- a/tfhe/src/integer/wopbs/mod.rs +++ b/tfhe/src/integer/wopbs/mod.rs @@ -218,12 +218,12 @@ mod experimental { /// ```rust /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::wopbs::*; - /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, 1); - /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, 1); + /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// ``` pub fn new_wopbs_key>( cks: &IntegerClientKey, @@ -271,11 +271,11 @@ mod experimental { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::wopbs::*; /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let nb_block = 3; /// //Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, nb_block); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, nb_block); /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// let mut moduli = 1_u64; /// for _ in 0..nb_block { @@ -479,11 +479,11 @@ mod experimental { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::wopbs::*; /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let nb_block = 3; /// //Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, nb_block); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, nb_block); /// /// // Generate wopbs_v0 key /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -519,11 +519,11 @@ mod experimental { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::wopbs::*; /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let nb_block = 3; /// //Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, nb_block); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, nb_block); /// /// //Generate wopbs_v0 key /// /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -591,11 +591,11 @@ mod experimental { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::wopbs::WopbsKey; /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let nb_block = 3; /// //Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, nb_block); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, nb_block); /// //Generate wopbs_v0 key /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// let mut moduli = 1_u64; @@ -718,13 +718,13 @@ mod experimental { /// use tfhe::integer::gen_keys_crt; /// use tfhe::integer::wopbs::*; /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// let basis: Vec = vec![5, 7]; /// let msg_space: u64 = basis.iter().copied().product(); /// /// //Generate the client key and the server key: - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS); /// /// let clear = 42 % msg_space; @@ -785,11 +785,11 @@ mod experimental { /// use tfhe::integer::gen_keys_radix; /// use tfhe::integer::wopbs::*; /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// let nb_block = 3; /// //Generate the client key and the server key: - /// let (cks, sks) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, nb_block); + /// let (cks, sks) = gen_keys_radix(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, nb_block); /// /// //Generate wopbs_v0 key /// /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -883,12 +883,12 @@ mod experimental { /// use tfhe::integer::gen_keys_crt; /// use tfhe::integer::wopbs::*; /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; /// /// let basis: Vec = vec![5, 7]; /// let msg_space: u64 = basis.iter().copied().product(); /// //Generate the client key and the server key: - /// let (cks, sks) = gen_keys_crt(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, basis); + /// let (cks, sks) = gen_keys_crt(PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, basis); /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS); /// /// let clear1 = 42 % msg_space; // Encrypt the integers diff --git a/tfhe/src/integer/wopbs/test.rs b/tfhe/src/integer/wopbs/test.rs index 4c6d17506..7471cc7f5 100644 --- a/tfhe/src/integer/wopbs/test.rs +++ b/tfhe/src/integer/wopbs/test.rs @@ -6,6 +6,7 @@ use crate::integer::server_key::crt::make_basis; use crate::integer::wopbs::{encode_radix, WopbsKey}; use crate::integer::{gen_keys, IntegerKeyKind}; use crate::shortint::ciphertext::Degree; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::parameters_wopbs::*; use crate::shortint::parameters::*; use paste::paste; @@ -38,11 +39,11 @@ macro_rules! create_parameterized_test{ ( ($name:ident)=> { create_parameterized_test!($name { - (V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS), + (V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS), #[cfg(not(tarpaulin))] - (V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS), + (V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS), #[cfg(not(tarpaulin))] - (V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS) + (V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS) }); }; } @@ -268,7 +269,7 @@ pub fn test_wopbs_non_reg_trivial_0() { use crate::integer::{gen_keys_radix, RadixCiphertext, RadixClientKey, ServerKey}; fn generate_keys() -> (RadixClientKey, ServerKey, WopbsKey) { - let (ck, sk) = gen_keys_radix(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, 16); + let (ck, sk) = gen_keys_radix(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, 16); let wopbs_key = WopbsKey::new_wopbs_key(&ck, &sk, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); (ck, sk, wopbs_key) diff --git a/tfhe/src/js_on_wasm_api/shortint.rs b/tfhe/src/js_on_wasm_api/shortint.rs index 3df1d8c1f..5415e2c29 100644 --- a/tfhe/src/js_on_wasm_api/shortint.rs +++ b/tfhe/src/js_on_wasm_api/shortint.rs @@ -3,15 +3,11 @@ use crate::core_crypto::commons::generators::DeterministicSeeder; use crate::core_crypto::commons::math::random::Seed; use crate::core_crypto::prelude::DefaultRandomGenerator; use crate::js_on_wasm_api::into_js_error; -use crate::shortint::parameters::classic::compact_pk::*; -use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::{ - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, -}; -use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::{ - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, -}; +use crate::shortint::parameters::v0_11::classic::compact_pk::*; +use crate::shortint::parameters::v0_11::classic::gaussian::*; +use crate::shortint::parameters::v0_11::compact_public_key_only::p_fail_2_minus_64::ks_pbs::*; +use crate::shortint::parameters::v0_11::key_switching::p_fail_2_minus_64::ks_pbs::*; +use crate::shortint::parameters::v1_0::*; use crate::shortint::parameters::*; use std::panic::set_hook; use wasm_bindgen::prelude::*; @@ -216,32 +212,78 @@ pub struct ShortintNoiseDistribution( pub(crate) crate::core_crypto::commons::math::random::DynamicDistribution, ); -// TODO: use macros once we have more parameters using the same pattern as -// expose_predefined_parameters -#[wasm_bindgen] -#[allow(non_camel_case_types)] -pub enum ShortintCompactPublicKeyEncryptionParametersName { - SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, -} +macro_rules! expose_predefined_pke_parameters { + ( + $( + ($param_pke_name:ident, $param_ks_name:ident) + ),* + $(,)? + ) => { + #[wasm_bindgen] + #[derive(Clone, Copy)] + #[allow(non_camel_case_types)] + pub enum ShortintCompactPublicKeyEncryptionParametersName { + $( + $param_pke_name, + )* + } -#[wasm_bindgen] -impl ShortintCompactPublicKeyEncryptionParameters { - #[allow(clippy::needless_pass_by_value)] - #[wasm_bindgen(constructor)] - pub fn new(name: ShortintCompactPublicKeyEncryptionParametersName) -> Self { - match name { - ShortintCompactPublicKeyEncryptionParametersName::SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 => Self { - compact_pke_params: V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - casting_parameters: V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - }, - ShortintCompactPublicKeyEncryptionParametersName::SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1 => Self { - compact_pke_params: V0_11_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, - casting_parameters: V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, + // wasm bindgen does not support methods on enums + #[wasm_bindgen] + pub fn shortint_pke_params_name(param: ShortintCompactPublicKeyEncryptionParametersName) -> String { + match param { + $( + ShortintCompactPublicKeyEncryptionParametersName::$param_pke_name => stringify!($param_pke_name).to_string(), + )* + } + } + + + #[wasm_bindgen] + impl ShortintCompactPublicKeyEncryptionParameters { + #[allow(clippy::needless_pass_by_value)] + #[wasm_bindgen(constructor)] + pub fn new(name: ShortintCompactPublicKeyEncryptionParametersName) -> Self { + match name { + $( + ShortintCompactPublicKeyEncryptionParametersName::$param_pke_name => { + Self { + compact_pke_params: $param_pke_name, + casting_parameters: $param_ks_name, + } + }, + )* + } } } } +} +expose_predefined_pke_parameters!( + ( + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 + ), + ( + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 + ), + ( + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1 + ), + ( + V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + ), + ( + V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, + V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1 + ), +); + +#[wasm_bindgen] +impl ShortintCompactPublicKeyEncryptionParameters { #[wasm_bindgen] #[allow(clippy::too_many_arguments)] pub fn new_parameters( @@ -287,7 +329,7 @@ impl ShortintCompactPublicKeyEncryptionParameters { } } -macro_rules! expose_predefined_parameters { +macro_rules! expose_predefined_pbs_parameters { ( $( $param_name:ident @@ -330,7 +372,86 @@ macro_rules! expose_predefined_parameters { } } -expose_predefined_parameters! { +expose_predefined_pbs_parameters! { + // TUniform + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + // v1.0 + V1_0_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128, + // Small params + V1_0_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128, + // CPK + V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + // CPK SMALL + V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + // v0.11 + // Gaussian V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, @@ -373,6 +494,7 @@ expose_predefined_parameters! { V0_11_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64, // CPK + V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, @@ -405,8 +527,6 @@ expose_predefined_parameters! { V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - // TUniform - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, } #[wasm_bindgen] diff --git a/tfhe/src/keycache/mod.rs b/tfhe/src/keycache/mod.rs index d82059b5a..8797322bb 100644 --- a/tfhe/src/keycache/mod.rs +++ b/tfhe/src/keycache/mod.rs @@ -33,7 +33,15 @@ pub mod utils { )* }; - ($param_type:ty => $($(#[$cfg:meta])? $const_param:ident),* $(,)? ) => { + (@fallback) => { + panic!("Unnamed parameters") + }; + + (@fallback: $self:ident, $name_fallback:ident) => { + $name_fallback($self) + }; + + ($param_type:ty => $($(#[$cfg:meta])? $const_param:ident),* $(,)? $(; fallback => $name_fallback:ident)? ) => { $( $(#[$cfg])? named_params_impl!(expose $const_param); @@ -45,7 +53,23 @@ pub mod utils { $(#[$cfg])? named_params_impl!({*self; $param_type} == ( $const_param )); )* - panic!("Unnamed parameters"); + + named_params_impl!(@fallback$(: self, $name_fallback)?) + } + } + + ::paste::paste! { + pub fn [](name: &str) -> $param_type { + match name { + $( + $(#[$cfg])? + [<$const_param _NAME>] => <$param_type>::from($const_param) , + )* + _ => panic!( + "Could not find parameter with name {name}\ + Are you querying the wrong parameter type? e.g. ClassicPBSParameter\ + instead of CompressionParameters") + } } } }; diff --git a/tfhe/src/safe_serialization.rs b/tfhe/src/safe_serialization.rs index 0815f4635..8d8b904f5 100644 --- a/tfhe/src/safe_serialization.rs +++ b/tfhe/src/safe_serialization.rs @@ -501,9 +501,9 @@ mod test_shortint { use tfhe_versionable::Versionize; use crate::named::Named; - use crate::shortint::parameters::{ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + use crate::shortint::parameters::current_params::{ + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, }; use crate::shortint::{gen_keys, Ciphertext}; @@ -511,7 +511,7 @@ mod test_shortint { #[test] fn safe_deserialization_ct_unversioned() { - let (ck, _sk) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let (ck, _sk) = gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let msg = 2_u64; @@ -529,14 +529,14 @@ mod test_shortint { assert!(DeserializationConfig::new(1 << 20) .deserialize_from::( buffer.as_slice(), - &V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64.to_shortint_conformance_param() + &V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128.to_shortint_conformance_param() ) .is_err()); let ct2 = DeserializationConfig::new(1 << 20) .deserialize_from::( buffer.as_slice(), - &PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.to_shortint_conformance_param(), + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.to_shortint_conformance_param(), ) .unwrap(); @@ -546,7 +546,7 @@ mod test_shortint { #[test] fn safe_deserialization_ct_versioned() { - let (ck, _sk) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let (ck, _sk) = gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let msg = 2_u64; @@ -564,14 +564,14 @@ mod test_shortint { assert!(DeserializationConfig::new(1 << 20,) .deserialize_from::( buffer.as_slice(), - &V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64.to_shortint_conformance_param() + &V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128.to_shortint_conformance_param() ) .is_err()); let ct2 = DeserializationConfig::new(1 << 20) .deserialize_from::( buffer.as_slice(), - &PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.to_shortint_conformance_param(), + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.to_shortint_conformance_param(), ) .unwrap(); @@ -581,7 +581,7 @@ mod test_shortint { #[test] fn safe_deserialization_ct_unlimited_size() { - let (ck, _sk) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let (ck, _sk) = gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let msg = 2_u64; @@ -599,7 +599,7 @@ mod test_shortint { let ct2 = DeserializationConfig::new_with_unlimited_size() .deserialize_from::( buffer.as_slice(), - &PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.to_shortint_conformance_param(), + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.to_shortint_conformance_param(), ) .unwrap(); @@ -609,7 +609,7 @@ mod test_shortint { #[test] fn safe_deserialization_size_limit() { - let (ck, _sk) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let (ck, _sk) = gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let msg = 2_u64; @@ -627,7 +627,7 @@ mod test_shortint { let ct2 = DeserializationConfig::new(size) .deserialize_from::( buffer.as_slice(), - &PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.to_shortint_conformance_param(), + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.to_shortint_conformance_param(), ) .unwrap(); @@ -683,8 +683,8 @@ mod test_integer { use crate::prelude::*; use crate::safe_serialization::{DeserializationConfig, SerializationConfig}; use crate::shortint::parameters::{ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, }; use crate::{ set_server_key, CompactCiphertextList, CompactCiphertextListConformanceParams, @@ -716,14 +716,14 @@ mod test_integer { assert_eq!(size as usize, buffer.len()); let to_param_set = |list_size_constraint| CompactCiphertextListConformanceParams { - shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 .to_shortint_conformance_param(), num_elements_constraint: list_size_constraint, }; for param_set in [ CompactCiphertextListConformanceParams { - shortint_params: V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + shortint_params: PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128 .to_shortint_conformance_param(), num_elements_constraint: ListSizeConstraint::exact_size(3), }, @@ -744,7 +744,7 @@ mod test_integer { ListSizeConstraint::try_size_in_range(2, 4).unwrap(), ] { let params = CompactCiphertextListConformanceParams { - shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 .to_shortint_conformance_param(), num_elements_constraint: len_constraint, }; @@ -755,7 +755,7 @@ mod test_integer { } let params = CompactCiphertextListConformanceParams { - shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 .to_shortint_conformance_param(), num_elements_constraint: ListSizeConstraint::exact_size(3), }; @@ -799,14 +799,14 @@ mod test_integer { assert_eq!(size as usize, buffer.len()); let to_param_set = |list_size_constraint| CompactCiphertextListConformanceParams { - shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 .to_shortint_conformance_param(), num_elements_constraint: list_size_constraint, }; for param_set in [ CompactCiphertextListConformanceParams { - shortint_params: V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64 + shortint_params: PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128 .to_shortint_conformance_param(), num_elements_constraint: ListSizeConstraint::exact_size(3), }, @@ -827,7 +827,7 @@ mod test_integer { ListSizeConstraint::try_size_in_range(2, 4).unwrap(), ] { let params = CompactCiphertextListConformanceParams { - shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 .to_shortint_conformance_param(), num_elements_constraint: len_constraint, }; @@ -838,7 +838,7 @@ mod test_integer { } let params = CompactCiphertextListConformanceParams { - shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 + shortint_params: PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128 .to_shortint_conformance_param(), num_elements_constraint: ListSizeConstraint::exact_size(3), }; diff --git a/tfhe/src/shortint/ciphertext/zk.rs b/tfhe/src/shortint/ciphertext/zk.rs index edca3bf0a..ebfff07a7 100644 --- a/tfhe/src/shortint/ciphertext/zk.rs +++ b/tfhe/src/shortint/ciphertext/zk.rs @@ -297,11 +297,7 @@ impl ParameterSetConformant for ProvenCompactCiphertextList { #[cfg(test)] mod tests { use crate::core_crypto::prelude::LweCiphertextCount; - use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::{ - ShortintCompactCiphertextListCastingMode, PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - }; + use crate::shortint::parameters::*; use crate::shortint::{ ClientKey, CompactPrivateKey, CompactPublicKey, KeySwitchingKey, ServerKey, }; @@ -310,9 +306,9 @@ mod tests { #[test] fn test_zk_ciphertext_encryption_ci_run_filter() { - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let pke_params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let ksk_params = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let pke_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let ksk_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let crs = CompactPkeCrs::from_shortint_params(pke_params, LweCiphertextCount(4)).unwrap(); let priv_key = CompactPrivateKey::new(pke_params); @@ -372,9 +368,9 @@ mod tests { #[test] fn test_zk_compact_ciphertext_list_encryption_ci_run_filter() { - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let pke_params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let ksk_params = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let pke_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let ksk_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let crs = CompactPkeCrs::from_shortint_params(pke_params, LweCiphertextCount(4)).unwrap(); let priv_key = CompactPrivateKey::new(pke_params); diff --git a/tfhe/src/shortint/client_key/mod.rs b/tfhe/src/shortint/client_key/mod.rs index dba1633e8..77013562d 100644 --- a/tfhe/src/shortint/client_key/mod.rs +++ b/tfhe/src/shortint/client_key/mod.rs @@ -465,9 +465,7 @@ impl ClientKey { /// # Example /// /// ```rust - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// use tfhe::shortint::ClientKey; /// /// // Generate the client key @@ -481,15 +479,6 @@ impl ClientKey { /// // Decryption: /// let dec = cks.decrypt_message_and_carry(&ct); /// assert_eq!(msg, dec); - /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encryption of one message: - /// let ct = cks.encrypt(msg); - /// - /// // Decryption: - /// let dec = cks.decrypt_message_and_carry(&ct); - /// assert_eq!(msg, dec); /// ``` pub fn decrypt_message_and_carry(&self, ct: &Ciphertext) -> u64 { let decrypted_u64 = self.decrypt_no_decode(ct); @@ -504,9 +493,7 @@ impl ClientKey { /// # Example /// /// ```rust - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// use tfhe::shortint::ClientKey; /// /// // Generate the client key @@ -520,15 +507,6 @@ impl ClientKey { /// // Decryption: /// let dec = cks.decrypt(&ct); /// assert_eq!(msg, dec); - /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encryption of one message: - /// let ct = cks.encrypt(msg); - /// - /// // Decryption: - /// let dec = cks.decrypt(&ct); - /// assert_eq!(msg, dec); /// ``` pub fn decrypt(&self, ct: &Ciphertext) -> u64 { self.decrypt_message_and_carry(ct) % ct.message_modulus.0 @@ -601,14 +579,11 @@ impl ClientKey { /// # Example /// /// ```rust - /// use tfhe::shortint::parameters::{ - /// V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - /// V0_11_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// use tfhe::shortint::ClientKey; /// /// // Generate the client key - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + /// let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// /// let msg = 3; /// @@ -618,15 +593,6 @@ impl ClientKey { /// // Decryption: /// let dec = cks.decrypt_message_and_carry_without_padding(&ct); /// assert_eq!(msg, dec); - /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encryption of one message: - /// let ct = cks.encrypt_without_padding(msg); - /// - /// // Decryption: - /// let dec = cks.decrypt_message_and_carry_without_padding(&ct); - /// assert_eq!(msg, dec); /// ``` pub fn decrypt_message_and_carry_without_padding(&self, ct: &Ciphertext) -> u64 { let decrypted_u64 = self.decrypt_no_decode(ct); @@ -642,9 +608,7 @@ impl ClientKey { /// # Example /// /// ```rust - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// use tfhe::shortint::ClientKey; /// /// // Generate the client key @@ -659,15 +623,6 @@ impl ClientKey { /// // Decryption: /// let dec = cks.decrypt_without_padding(&ct); /// assert_eq!(msg % modulus, dec); - /// - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encryption of one message: - /// let ct = cks.encrypt_without_padding(msg); - /// - /// // Decryption: - /// let dec = cks.decrypt_without_padding(&ct); - /// assert_eq!(msg % modulus, dec); /// ``` pub fn decrypt_without_padding(&self, ct: &Ciphertext) -> u64 { self.decrypt_message_and_carry_without_padding(ct) % ct.message_modulus.0 @@ -744,10 +699,7 @@ impl ClientKey { /// # Example /// /// ```rust - /// use tfhe::shortint::parameters::{ - /// MessageModulus, PARAM_MESSAGE_2_CARRY_2_KS_PBS, - /// V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::{MessageModulus, PARAM_MESSAGE_2_CARRY_2_KS_PBS}; /// use tfhe::shortint::ClientKey; /// /// // Generate the client key @@ -762,16 +714,6 @@ impl ClientKey { /// // Decryption: /// let dec = cks.decrypt_message_native_crt(&ct, modulus); /// assert_eq!(msg, dec % modulus.0); - /// - /// // Generate the client key - /// let cks = ClientKey::new(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encryption of one message: - /// let ct = cks.encrypt_native_crt(msg, modulus); - /// - /// // Decryption: - /// let dec = cks.decrypt_message_native_crt(&ct, modulus); - /// assert_eq!(msg, dec % modulus.0); /// ``` pub fn decrypt_message_native_crt( &self, diff --git a/tfhe/src/shortint/encoding.rs b/tfhe/src/shortint/encoding.rs index 7cb0478b0..6d0442beb 100644 --- a/tfhe/src/shortint/encoding.rs +++ b/tfhe/src/shortint/encoding.rs @@ -96,10 +96,10 @@ impl ShortintEncoding { #[test] fn test_pow_2_encoding_ci_run_filter() { - use crate::shortint::parameters::V0_10_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + use crate::shortint::parameters::current_params::V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; const CIPHERTEXT_MODULUS: u64 = 1u64 << 62; - let mut params = V0_10_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + let mut params = V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; params.carry_modulus = CarryModulus(1); params.ciphertext_modulus = CiphertextModulus::new(CIPHERTEXT_MODULUS as u128); diff --git a/tfhe/src/shortint/key_switching_key/mod.rs b/tfhe/src/shortint/key_switching_key/mod.rs index 8655a4e39..6e5cbbb6c 100644 --- a/tfhe/src/shortint/key_switching_key/mod.rs +++ b/tfhe/src/shortint/key_switching_key/mod.rs @@ -175,22 +175,23 @@ impl KeySwitchingKey { /// # Example /// /// ```rust - /// use tfhe::shortint::parameters::{ - /// V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + /// use tfhe::shortint::parameters::v1_0::{ + /// V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + /// V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + /// V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, /// }; /// use tfhe::shortint::prelude::*; /// use tfhe::shortint::{gen_keys, KeySwitchingKey}; /// /// // Generate the client keys and server keys: - /// let (ck1, sk1) = gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); - /// let (ck2, sk2) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let (ck1, sk1) = gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); + /// let (ck2, sk2) = gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// // Generate the server key: /// let ksk = KeySwitchingKey::new( /// (&ck1, Some(&sk1)), /// (&ck2, &sk2), - /// V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + /// V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, /// ); /// ``` pub fn new<'input_key, InputEncryptionKey>( @@ -322,22 +323,23 @@ impl KeySwitchingKey { /// # Example (the following code won't actually run because this function is private) /// /// ```rust - /// use tfhe::shortint::parameters::{ - /// V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + /// use tfhe::shortint::parameters::v1_0::{ + /// V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + /// V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + /// V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, /// }; /// use tfhe::shortint::prelude::*; /// use tfhe::shortint::{gen_keys, KeySwitchingKey}; /// /// // Generate the client keys and server keys: - /// let (ck1, sk1) = gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); - /// let (ck2, sk2) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let (ck1, sk1) = gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); + /// let (ck2, sk2) = gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// // Generate the server key: /// let ksk = KeySwitchingKey::new( /// (&ck1, Some(&sk1)), /// (&ck2, &sk2), - /// V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + /// V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, /// ); /// /// let cleartext = 1; @@ -463,22 +465,23 @@ impl<'keys> KeySwitchingKeyView<'keys> { /// # Example (the following code won't actually run because this function is private) /// /// ```rust - /// use tfhe::shortint::parameters::{ - /// V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - /// V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + /// use tfhe::shortint::parameters::v1_0::{ + /// V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + /// V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + /// V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, /// }; /// use tfhe::shortint::prelude::*; /// use tfhe::shortint::{gen_keys, KeySwitchingKey}; /// /// // Generate the client keys and server keys: - /// let (ck1, sk1) = gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); - /// let (ck2, sk2) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + /// let (ck1, sk1) = gen_keys(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); + /// let (ck2, sk2) = gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// // Generate the server key: /// let ksk = KeySwitchingKey::new( /// (&ck1, Some(&sk1)), /// (&ck2, &sk2), - /// V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + /// V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, /// ); /// /// let cleartext = 1; diff --git a/tfhe/src/shortint/key_switching_key/test.rs b/tfhe/src/shortint/key_switching_key/test.rs index 251d8a824..1b5592930 100644 --- a/tfhe/src/shortint/key_switching_key/test.rs +++ b/tfhe/src/shortint/key_switching_key/test.rs @@ -1,17 +1,14 @@ use crate::shortint::keycache::{KEY_CACHE, KEY_CACHE_KSK}; -use crate::shortint::parameters::{ - ShortintKeySwitchingParameters, V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, -}; +use crate::shortint::parameters::current_params::*; +use crate::shortint::parameters::ShortintKeySwitchingParameters; use crate::shortint::prelude::*; #[test] fn gen_multi_keys_test_fresh_ci_run_filter() { let keys = KEY_CACHE_KSK.get_from_param(( - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, )); let ck1 = keys.client_key_1(); let (ck2, sk2) = (keys.client_key_2(), keys.server_key_2()); @@ -58,7 +55,7 @@ fn gen_multi_keys_test_fresh_ci_run_filter() { #[test] fn gen_multi_keys_test_fresh_2_ci_run_filter() { - let keys2 = KEY_CACHE.get_from_param(V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64); + let keys2 = KEY_CACHE.get_from_param(V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128); let (ck2, sk2) = (keys2.client_key(), keys2.server_key()); let ksk_params = ShortintKeySwitchingParameters::new( @@ -68,8 +65,8 @@ fn gen_multi_keys_test_fresh_2_ci_run_filter() { ); let keys = KEY_CACHE_KSK.get_from_param(( - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, ksk_params, )); let ck1 = keys.client_key_1(); @@ -117,9 +114,9 @@ fn gen_multi_keys_test_fresh_2_ci_run_filter() { #[test] fn gen_multi_keys_test_add_with_overflow_ci_run_filter() { let keys = KEY_CACHE_KSK.get_from_param(( - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, )); let (ck1, sk1) = (keys.client_key_1(), keys.server_key_1()); let (ck2, sk2) = (keys.client_key_2(), keys.server_key_2()); @@ -142,7 +139,7 @@ fn gen_multi_keys_test_add_with_overflow_ci_run_filter() { #[test] fn gen_multi_keys_test_no_shift_ci_run_filter() { - let keys2 = KEY_CACHE.get_from_param(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + let keys2 = KEY_CACHE.get_from_param(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let ck2 = keys2.client_key(); let ksk_params = ShortintKeySwitchingParameters::new( @@ -152,8 +149,8 @@ fn gen_multi_keys_test_no_shift_ci_run_filter() { ); let keys = KEY_CACHE_KSK.get_from_param(( - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, ksk_params, )); let ksk = keys.key_switching_key(); @@ -163,7 +160,7 @@ fn gen_multi_keys_test_no_shift_ci_run_filter() { #[test] fn gen_multi_keys_test_truncate_ci_run_filter() { - let keys2 = KEY_CACHE.get_from_param(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + let keys2 = KEY_CACHE.get_from_param(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); let (ck2, sk2) = (keys2.client_key(), keys2.server_key()); let ksk_params = ShortintKeySwitchingParameters::new( @@ -173,8 +170,8 @@ fn gen_multi_keys_test_truncate_ci_run_filter() { ); let keys = KEY_CACHE_KSK.get_from_param(( - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, ksk_params, )); let (ck1, sk1) = (keys.client_key_1(), keys.server_key_1()); diff --git a/tfhe/src/shortint/keycache.rs b/tfhe/src/shortint/keycache.rs index 4750af535..83952b6f5 100644 --- a/tfhe/src/shortint/keycache.rs +++ b/tfhe/src/shortint/keycache.rs @@ -2,28 +2,9 @@ use std::sync::LazyLock; use crate::keycache::utils::named_params_impl; use crate::keycache::*; -use crate::shortint::parameters::classic::compact_pk::*; -use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; #[cfg(tarpaulin)] use crate::shortint::parameters::coverage_parameters::*; -use crate::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS; -use crate::shortint::parameters::key_switching::*; -use crate::shortint::parameters::list_compression::*; -use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::{ - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, -}; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::parameters_wopbs::*; use crate::shortint::parameters::*; use crate::shortint::wopbs::WopbsKey; @@ -31,51 +12,56 @@ use crate::shortint::{ClientKey, KeySwitchingKey, ServerKey}; use serde::{Deserialize, Serialize}; named_params_impl!( ShortintParameterSet => - V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128, // Small - V0_11_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128, + // For GPU classical tests until they have the drift technique parameters + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + // To avoid crashing shortint tests with slow/too large keys for 4_4 + // And to have parameters without drift technique for WOPBS tests + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, // MultiBit Group 2 - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -105,9 +91,6 @@ named_params_impl!( ShortintParameterSet => V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, // MultiBit Group 3 - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, @@ -171,49 +154,49 @@ named_params_impl!( ShortintParameterSet => V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, // CPK - V0_11_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, // CPK SMALL - V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, // TUniform - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, // Wopbs LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_0_KS_PBS, LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS, @@ -327,61 +310,40 @@ impl NamedParam for WopbsParameters { } } -impl NamedParam for ShortintKeySwitchingParameters { - fn name(&self) -> String { - named_params_impl!(expose V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS); - named_params_impl!( - { - *self; - Self - } == (V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS) - ); +named_params_impl!(ShortintKeySwitchingParameters => + V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + ; fallback => ks_params_default_name +); - format!( - "PARAM_KEYSWITCH_CUSTOM_KS_LEVEL_{}_KS_BASE_LOG_{}", - self.ks_level.0, self.ks_base_log.0 - ) - } +fn ks_params_default_name(params: &ShortintKeySwitchingParameters) -> String { + format!( + "PARAM_KEYSWITCH_CUSTOM_KS_LEVEL_{}_KS_BASE_LOG_{}", + params.ks_level.0, params.ks_base_log.0 + ) } -impl NamedParam for CompressionParameters { - fn name(&self) -> String { - named_params_impl!(expose - COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 - ); +named_params_impl!(CompressionParameters => + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ; fallback => comp_params_default_name +); - named_params_impl!( - { - *self; - Self - } == (COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) - ); - - format!( - "COMP_PARAM_CUSTOM_BR_LEVEL_{}_NOISE_DISTRIB_{}", - self.br_level.0, self.packing_ks_key_noise_distribution - ) - } +fn comp_params_default_name(params: &CompressionParameters) -> String { + format!( + "COMP_PARAM_CUSTOM_BR_LEVEL_{}_NOISE_DISTRIB_{}", + params.br_level.0, params.packing_ks_key_noise_distribution + ) } -impl NamedParam for CompactPublicKeyEncryptionParameters { - fn name(&self) -> String { - named_params_impl!(expose - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64 - ); +named_params_impl!(CompactPublicKeyEncryptionParameters => + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ; fallback => cpke_params_default_name +); - named_params_impl!( - { - *self; - Self - } == (V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) - ); - - format!( - "CPKE_PARAM_CUSTOM_LWE_DIM_{}_NOISE_DISTRIB_{}", - self.encryption_lwe_dimension.0, self.encryption_noise_distribution - ) - } +fn cpke_params_default_name(params: &CompactPublicKeyEncryptionParameters) -> String { + format!( + "CPKE_PARAM_CUSTOM_LWE_DIM_{}_NOISE_DISTRIB_{}", + params.encryption_lwe_dimension.0, params.encryption_noise_distribution + ) } impl From for (ClientKey, ServerKey) { diff --git a/tfhe/src/shortint/list_compression/compression.rs b/tfhe/src/shortint/list_compression/compression.rs index a3a2face4..756870ee0 100644 --- a/tfhe/src/shortint/list_compression/compression.rs +++ b/tfhe/src/shortint/list_compression/compression.rs @@ -248,23 +248,23 @@ impl DecompressionKey { #[cfg(test)] mod test { use super::*; - use crate::shortint::parameters::list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + use crate::shortint::parameters::current_params::*; use crate::shortint::{gen_keys, ClientKey, ShortintParameterSet}; use rayon::iter::IntoParallelIterator; #[test] fn test_packing() { for params in [ - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(), + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(), + V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(), ] { // Generate the client key and the server key: let (cks, _sks) = gen_keys::(params); let private_compression_key: crate::shortint::list_compression::CompressionPrivateKeys = - cks.new_compression_private_key(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + cks.new_compression_private_key( + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + ); let (compression_key, decompression_key) = cks.new_compression_decompression_keys(&private_compression_key); diff --git a/tfhe/src/shortint/parameters/aliases.rs b/tfhe/src/shortint/parameters/aliases.rs new file mode 100644 index 000000000..2bd45a770 --- /dev/null +++ b/tfhe/src/shortint/parameters/aliases.rs @@ -0,0 +1,103 @@ +use crate::shortint::parameters::{ + current_params, ClassicPBSParameters, CompactPublicKeyEncryptionParameters, + CompressionParameters, MultiBitPBSParameters, ShortintKeySwitchingParameters, +}; + +use current_params::classic::gaussian::p_fail_2_minus_128::ks_pbs::{ + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, +}; +use current_params::classic::gaussian::p_fail_2_minus_64::ks_pbs::V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +use current_params::classic::tuniform::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +use current_params::classic::tuniform::p_fail_2_minus_64::ks_pbs::V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use current_params::compact_public_key_only::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +use current_params::key_switching::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; +use current_params::list_compression::p_fail_2_minus_128::{ + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, +}; +use current_params::list_compression::p_fail_2_minus_64::{ + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, +}; +use current_params::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs_gpu::{ + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, +}; +use current_params::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + +// Aliases + +// Compute Gaussian +// 2M128 +pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; + +// Used by CRT doctests +pub const PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128; + +// 2M64 +pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + +// Compute TUniform +// 2M128 +pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + +pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS: ClassicPBSParameters = + PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + +pub const PARAM_MESSAGE_2_CARRY_2: ClassicPBSParameters = PARAM_MESSAGE_2_CARRY_2_KS_PBS; + +// 2M64 +pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters = + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + +// Compression Gaussian +// 2M128 +pub const COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: CompressionParameters = + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; + +// 2M64 +pub const COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: CompressionParameters = + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + +// Compression TUniform +// 2M128 +pub const COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompressionParameters = + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + +pub const COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS: CompressionParameters = + COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + +pub const COMP_PARAM_MESSAGE_2_CARRY_2: CompressionParameters = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS; + +// 2M64 +pub const COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = + V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + +// PKE TUniform +pub const PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompactPublicKeyEncryptionParameters = + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + +// PKE To Compute Keyswitch +pub const PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ShortintKeySwitchingParameters = + V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + +// GPU TUniform +pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + +pub const PARAM_GPU_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_3_KS_PBS: MultiBitPBSParameters = + PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + +// GPU Gaussian +pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64; +pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; +pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; diff --git a/tfhe/src/shortint/parameters/classic.rs b/tfhe/src/shortint/parameters/classic.rs new file mode 100644 index 000000000..d6f888450 --- /dev/null +++ b/tfhe/src/shortint/parameters/classic.rs @@ -0,0 +1,130 @@ +use crate::core_crypto::prelude::MsDecompressionType; +use crate::shortint::backward_compatibility::parameters::ClassicPBSParametersVersions; +use crate::shortint::parameters::{ + CarryModulus, CiphertextConformanceParams, CiphertextModulus, DecompositionBaseLog, + DecompositionLevelCount, Degree, DynamicDistribution, EncryptionKeyChoice, GlweDimension, + LweCiphertextConformanceParams, LweDimension, MaxNoiseLevel, MessageModulus, + ModulusSwitchNoiseReductionParams, NoiseLevel, PBSOrder, PolynomialSize, +}; + +use serde::{Deserialize, Serialize}; +use tfhe_versionable::Versionize; + +/// A structure defining the set of cryptographic parameters for homomorphic integer circuit +/// evaluation. +/// +/// The choice of encryption key for (`shortint +/// ciphertext`)[`crate::shortint::ciphertext::Ciphertext`]. +/// +/// * The `Big` choice means the big LWE key derived from the GLWE key is used to encrypt the input +/// ciphertext. This offers better performance but the (`public +/// key`)[`crate::shortint::public_key::PublicKey`] can be extremely large and in some cases may +/// not fit in memory. When refreshing a ciphertext and/or evaluating a table lookup the keyswitch +/// is computed first followed by a PBS, the keyswitch goes from the large key to the small key +/// and the PBS goes from the small key to the large key. +/// * The `Small` choice means the small LWE key is used to encrypt the input ciphertext. +/// Performance is not as good as in the `Big` case but (`public +/// key`)[`crate::shortint::public_key::PublicKey`] sizes are much more manageable and should +/// always fit in memory. When refreshing a ciphertext and/or evaluating a table lookup the PBS is +/// computed first followed by a keyswitch, the PBS goes from the small key to the large key and +/// the keyswitch goes from the large key to the small key. +#[derive(Serialize, Copy, Clone, Deserialize, Debug, PartialEq, Versionize)] +#[versionize(ClassicPBSParametersVersions)] +pub struct ClassicPBSParameters { + pub lwe_dimension: LweDimension, + pub glwe_dimension: GlweDimension, + pub polynomial_size: PolynomialSize, + pub lwe_noise_distribution: DynamicDistribution, + pub glwe_noise_distribution: DynamicDistribution, + pub pbs_base_log: DecompositionBaseLog, + pub pbs_level: DecompositionLevelCount, + pub ks_base_log: DecompositionBaseLog, + pub ks_level: DecompositionLevelCount, + pub message_modulus: MessageModulus, + pub carry_modulus: CarryModulus, + pub max_noise_level: MaxNoiseLevel, + pub log2_p_fail: f64, + pub ciphertext_modulus: CiphertextModulus, + pub encryption_key_choice: EncryptionKeyChoice, + pub modulus_switch_noise_reduction_params: Option, +} + +impl ClassicPBSParameters { + /// Constructs a new set of parameters for integer circuit evaluation. + /// + /// # Warning + /// + /// Failing to fix the parameters properly would yield incorrect and unsecure computation. + /// Unless you are a cryptographer who really knows the impact of each of those parameters, you + /// __must__ stick with the provided parameters. + #[allow(clippy::too_many_arguments)] + pub fn new( + lwe_dimension: LweDimension, + glwe_dimension: GlweDimension, + polynomial_size: PolynomialSize, + lwe_noise_distribution: DynamicDistribution, + glwe_noise_distribution: DynamicDistribution, + pbs_base_log: DecompositionBaseLog, + pbs_level: DecompositionLevelCount, + ks_base_log: DecompositionBaseLog, + ks_level: DecompositionLevelCount, + message_modulus: MessageModulus, + carry_modulus: CarryModulus, + max_noise_level: MaxNoiseLevel, + log2_p_fail: f64, + ciphertext_modulus: CiphertextModulus, + encryption_key_choice: EncryptionKeyChoice, + modulus_switch_noise_reduction_params: Option, + ) -> Self { + Self { + lwe_dimension, + glwe_dimension, + polynomial_size, + lwe_noise_distribution, + glwe_noise_distribution, + pbs_base_log, + pbs_level, + ks_base_log, + ks_level, + message_modulus, + carry_modulus, + max_noise_level, + log2_p_fail, + ciphertext_modulus, + encryption_key_choice, + modulus_switch_noise_reduction_params, + } + } + + pub fn to_shortint_conformance_param(&self) -> CiphertextConformanceParams { + let (pbs_order, expected_dim) = match self.encryption_key_choice { + EncryptionKeyChoice::Big => ( + PBSOrder::KeyswitchBootstrap, + self.glwe_dimension + .to_equivalent_lwe_dimension(self.polynomial_size), + ), + EncryptionKeyChoice::Small => (PBSOrder::BootstrapKeyswitch, self.lwe_dimension), + }; + + let message_modulus = self.message_modulus; + let ciphertext_modulus = self.ciphertext_modulus; + let carry_modulus = self.carry_modulus; + + let degree = Degree::new(message_modulus.0 - 1); + + let noise_level = NoiseLevel::NOMINAL; + + CiphertextConformanceParams { + ct_params: LweCiphertextConformanceParams { + lwe_dim: expected_dim, + ct_modulus: ciphertext_modulus, + ms_decompression_method: MsDecompressionType::ClassicPbs, + }, + message_modulus, + carry_modulus, + pbs_order, + degree, + noise_level, + } + } +} diff --git a/tfhe/src/shortint/parameters/compact_public_key_only/mod.rs b/tfhe/src/shortint/parameters/compact_public_key_only.rs similarity index 95% rename from tfhe/src/shortint/parameters/compact_public_key_only/mod.rs rename to tfhe/src/shortint/parameters/compact_public_key_only.rs index 1caeb6854..9f0a5f963 100644 --- a/tfhe/src/shortint/parameters/compact_public_key_only/mod.rs +++ b/tfhe/src/shortint/parameters/compact_public_key_only.rs @@ -1,13 +1,10 @@ -pub mod p_fail_2_minus_64; - -use super::{CiphertextModulus, PBSOrder}; -use crate::core_crypto::commons::parameters::{DynamicDistribution, LweDimension}; use crate::shortint::backward_compatibility::parameters::compact_public_key_only::{ CompactCiphertextListExpansionKindVersions, CompactPublicKeyEncryptionParametersVersions, }; use crate::shortint::parameters::{ - CarryModulus, ClassicPBSParameters, MessageModulus, MultiBitPBSParameters, PBSParameters, - ShortintParameterSet, SupportedCompactPkeZkScheme, + CarryModulus, CiphertextModulus, ClassicPBSParameters, DynamicDistribution, LweDimension, + MessageModulus, MultiBitPBSParameters, PBSOrder, PBSParameters, ShortintParameterSet, + SupportedCompactPkeZkScheme, }; use crate::shortint::{KeySwitchingKeyView, PaddingBit, ShortintEncoding}; use crate::Error; diff --git a/tfhe/src/shortint/parameters/coverage_parameters.rs b/tfhe/src/shortint/parameters/coverage_parameters.rs index 38d92daf2..05d31e15c 100644 --- a/tfhe/src/shortint/parameters/coverage_parameters.rs +++ b/tfhe/src/shortint/parameters/coverage_parameters.rs @@ -3,10 +3,9 @@ //! This module provides the structure containing the cryptographic parameters only intended to be //! used to speed up test coverage operations. //! These parameters are *NOT safe*. -use crate::core_crypto::prelude::LweBskGroupingFactor; use crate::shortint::parameters::{ DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension, - LweDimension, PolynomialSize, StandardDev, + LweBskGroupingFactor, LweDimension, PolynomialSize, StandardDev, }; use crate::shortint::{ CarryModulus, CiphertextModulus, ClassicPBSParameters, EncryptionKeyChoice, MaxNoiseLevel, diff --git a/tfhe/src/shortint/parameters/key_switching/mod.rs b/tfhe/src/shortint/parameters/key_switching.rs similarity index 98% rename from tfhe/src/shortint/parameters/key_switching/mod.rs rename to tfhe/src/shortint/parameters/key_switching.rs index 670813adf..c7caa478e 100644 --- a/tfhe/src/shortint/parameters/key_switching/mod.rs +++ b/tfhe/src/shortint/parameters/key_switching.rs @@ -1,5 +1,3 @@ -pub mod p_fail_2_minus_64; - use crate::shortint::backward_compatibility::parameters::key_switching::ShortintKeySwitchingParametersVersions; use crate::shortint::parameters::{ DecompositionBaseLog, DecompositionLevelCount, EncryptionKeyChoice, diff --git a/tfhe/src/shortint/parameters/list_compression.rs b/tfhe/src/shortint/parameters/list_compression.rs index 6e34507b1..bbe3230f1 100644 --- a/tfhe/src/shortint/parameters/list_compression.rs +++ b/tfhe/src/shortint/parameters/list_compression.rs @@ -1,12 +1,11 @@ -use tfhe_versionable::Versionize; - -use crate::core_crypto::prelude::{CiphertextModulusLog, LweCiphertextCount}; use crate::shortint::backward_compatibility::parameters::list_compression::CompressionParametersVersions; use crate::shortint::parameters::{ - DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension, - PolynomialSize, + CiphertextModulusLog, DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, + GlweDimension, LweCiphertextCount, PolynomialSize, }; + use std::fmt::Debug; +use tfhe_versionable::Versionize; #[derive(Copy, Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize, Versionize)] #[versionize(CompressionParametersVersions)] @@ -21,19 +20,3 @@ pub struct CompressionParameters { pub storage_log_modulus: CiphertextModulusLog, pub packing_ks_key_noise_distribution: DynamicDistribution, } - -pub const COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = - V0_11_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - -pub const V0_11_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = - CompressionParameters { - br_level: DecompositionLevelCount(1), - br_base_log: DecompositionBaseLog(23), - packing_ks_level: DecompositionLevelCount(2), - packing_ks_base_log: DecompositionBaseLog(6), - packing_ks_polynomial_size: PolynomialSize(256), - packing_ks_glwe_dimension: GlweDimension(4), - lwe_per_glwe: LweCiphertextCount(256), - storage_log_modulus: CiphertextModulusLog(12), - packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43), - }; diff --git a/tfhe/src/shortint/parameters/mod.rs b/tfhe/src/shortint/parameters/mod.rs index e4d0d8141..206b322ce 100644 --- a/tfhe/src/shortint/parameters/mod.rs +++ b/tfhe/src/shortint/parameters/mod.rs @@ -6,16 +6,17 @@ //! sets. use crate::conformance::ListSizeConstraint; -pub use crate::core_crypto::commons::dispersion::StandardDev; +pub use crate::core_crypto::commons::dispersion::{StandardDev, Variance}; pub use crate::core_crypto::commons::parameters::{ - CiphertextModulus as CoreCiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, - DynamicDistribution, GlweDimension, LweBskGroupingFactor, LweDimension, PolynomialSize, + CiphertextModulus as CoreCiphertextModulus, CiphertextModulusLog, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, + LweBskGroupingFactor, LweCiphertextCount, LweDimension, NoiseEstimationMeasureBound, + PolynomialSize, RSigmaFactor, }; use crate::core_crypto::fft_impl::fft64::crypto::bootstrap::LweBootstrapKeyConformanceParams; use crate::core_crypto::prelude::{ - GlweCiphertextConformanceParams, LweCiphertextConformanceParams, LweCiphertextCount, - LweCiphertextListConformanceParams, LweKeyswitchKeyConformanceParams, MsDecompressionType, - NoiseEstimationMeasureBound, RSigmaFactor, Variance, + GlweCiphertextConformanceParams, LweCiphertextConformanceParams, + LweCiphertextListConformanceParams, LweKeyswitchKeyConformanceParams, }; use crate::shortint::backward_compatibility::parameters::*; #[cfg(feature = "zk-pok")] @@ -24,6 +25,7 @@ use serde::{Deserialize, Serialize}; use tfhe_versionable::Versionize; +pub mod aliases; pub mod classic; pub mod compact_public_key_only; #[cfg(tarpaulin)] @@ -36,41 +38,23 @@ pub mod parameters_wopbs_message_carry; pub mod parameters_wopbs_only; pub mod v0_10; pub mod v0_11; +pub mod v1_0; + +// TODO, what do we do about this one ? +pub use aliases::*; +pub use v1_0 as current_params; use super::backward_compatibility::parameters::modulus_switch_noise_reduction::ModulusSwitchNoiseReductionParamsVersions; pub use super::ciphertext::{Degree, MaxNoiseLevel, NoiseLevel}; use super::server_key::PBSConformanceParams; pub use super::PBSOrder; -pub use crate::core_crypto::commons::parameters::EncryptionKeyChoice; use crate::shortint::ciphertext::MaxDegree; -pub use crate::shortint::parameters::classic::compact_pk::*; -pub use crate::shortint::parameters::classic::gaussian::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::classic::gaussian::p_fail_2_minus_64::pbs_ks::*; -pub use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::list_compression::{ - CompressionParameters, COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, -}; -pub use crate::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs_gpu::*; -pub use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::*; +pub use crate::shortint::parameters::list_compression::CompressionParameters; +pub use classic::ClassicPBSParameters; pub use compact_public_key_only::{ CastingFunctionsOwned, CastingFunctionsView, CompactCiphertextListExpansionKind, CompactPublicKeyEncryptionParameters, ShortintCompactCiphertextListCastingMode, }; - -pub use crate::shortint::parameters::v0_10::classic::compact_pk::gaussian::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::v0_10::classic::compact_pk::gaussian::p_fail_2_minus_64::pbs_ks::*; -pub use crate::shortint::parameters::v0_10::classic::gaussian::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::v0_10::classic::gaussian::p_fail_2_minus_64::pbs_ks::*; -pub use crate::shortint::parameters::v0_10::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::v0_10::classic::tuniform::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::v0_10::key_switching::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::v0_10::compact_public_key_only::p_fail_2_minus_64::ks_pbs::*; - -pub use crate::shortint::parameters::v0_11::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::v0_11::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs_gpu::*; -pub use crate::shortint::parameters::v0_11::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::*; - #[cfg(tarpaulin)] pub use coverage_parameters::*; pub use key_switching::ShortintKeySwitchingParameters; @@ -107,124 +91,6 @@ pub struct CarryModulus(pub u64); /// Determines in what ring computations are made pub type CiphertextModulus = CoreCiphertextModulus; -/// A structure defining the set of cryptographic parameters for homomorphic integer circuit -/// evaluation. -/// -/// The choice of encryption key for (`shortint ciphertext`)[`super::ciphertext::Ciphertext`]. -/// -/// * The `Big` choice means the big LWE key derived from the GLWE key is used to encrypt the input -/// ciphertext. This offers better performance but the (`public -/// key`)[`super::public_key::PublicKey`] can be extremely large and in some cases may not fit in -/// memory. When refreshing a ciphertext and/or evaluating a table lookup the keyswitch is -/// computed first followed by a PBS, the keyswitch goes from the large key to the small key and -/// the PBS goes from the small key to the large key. -/// * The `Small` choice means the small LWE key is used to encrypt the input ciphertext. -/// Performance is not as good as in the `Big` case but (`public -/// key`)[`super::public_key::PublicKey`] sizes are much more manageable and should always fit in -/// memory. When refreshing a ciphertext and/or evaluating a table lookup the PBS is computed -/// first followed by a keyswitch, the PBS goes from the small key to the large key and the -/// keyswitch goes from the large key to the small key. -#[derive(Serialize, Copy, Clone, Deserialize, Debug, PartialEq, Versionize)] -#[versionize(ClassicPBSParametersVersions)] -pub struct ClassicPBSParameters { - pub lwe_dimension: LweDimension, - pub glwe_dimension: GlweDimension, - pub polynomial_size: PolynomialSize, - pub lwe_noise_distribution: DynamicDistribution, - pub glwe_noise_distribution: DynamicDistribution, - pub pbs_base_log: DecompositionBaseLog, - pub pbs_level: DecompositionLevelCount, - pub ks_base_log: DecompositionBaseLog, - pub ks_level: DecompositionLevelCount, - pub message_modulus: MessageModulus, - pub carry_modulus: CarryModulus, - pub max_noise_level: MaxNoiseLevel, - pub log2_p_fail: f64, - pub ciphertext_modulus: CiphertextModulus, - pub encryption_key_choice: EncryptionKeyChoice, - pub modulus_switch_noise_reduction_params: Option, -} - -impl ClassicPBSParameters { - /// Constructs a new set of parameters for integer circuit evaluation. - /// - /// # Warning - /// - /// Failing to fix the parameters properly would yield incorrect and unsecure computation. - /// Unless you are a cryptographer who really knows the impact of each of those parameters, you - /// __must__ stick with the provided parameters. - #[allow(clippy::too_many_arguments)] - pub fn new( - lwe_dimension: LweDimension, - glwe_dimension: GlweDimension, - polynomial_size: PolynomialSize, - lwe_noise_distribution: DynamicDistribution, - glwe_noise_distribution: DynamicDistribution, - pbs_base_log: DecompositionBaseLog, - pbs_level: DecompositionLevelCount, - ks_base_log: DecompositionBaseLog, - ks_level: DecompositionLevelCount, - message_modulus: MessageModulus, - carry_modulus: CarryModulus, - max_noise_level: MaxNoiseLevel, - log2_p_fail: f64, - ciphertext_modulus: CiphertextModulus, - encryption_key_choice: EncryptionKeyChoice, - modulus_switch_noise_reduction_params: Option, - ) -> Self { - Self { - lwe_dimension, - glwe_dimension, - polynomial_size, - lwe_noise_distribution, - glwe_noise_distribution, - pbs_base_log, - pbs_level, - ks_base_log, - ks_level, - message_modulus, - carry_modulus, - max_noise_level, - log2_p_fail, - ciphertext_modulus, - encryption_key_choice, - modulus_switch_noise_reduction_params, - } - } - - pub fn to_shortint_conformance_param(&self) -> CiphertextConformanceParams { - let (pbs_order, expected_dim) = match self.encryption_key_choice { - EncryptionKeyChoice::Big => ( - PBSOrder::KeyswitchBootstrap, - self.glwe_dimension - .to_equivalent_lwe_dimension(self.polynomial_size), - ), - EncryptionKeyChoice::Small => (PBSOrder::BootstrapKeyswitch, self.lwe_dimension), - }; - - let message_modulus = self.message_modulus; - let ciphertext_modulus = self.ciphertext_modulus; - let carry_modulus = self.carry_modulus; - - let degree = Degree::new(message_modulus.0 - 1); - - let noise_level = NoiseLevel::NOMINAL; - - CiphertextConformanceParams { - ct_params: LweCiphertextConformanceParams { - lwe_dim: expected_dim, - ct_modulus: ciphertext_modulus, - ms_decompression_method: MsDecompressionType::ClassicPbs, - }, - message_modulus, - carry_modulus, - pbs_order, - degree, - noise_level, - } - } -} - impl From<&PBSConformanceParams> for LweBootstrapKeyConformanceParams { fn from(value: &PBSConformanceParams) -> Self { Self { @@ -689,124 +555,6 @@ where } } -/// Vector containing all [`ClassicPBSParameters`] parameter sets -pub const ALL_PARAMETER_VEC: [ClassicPBSParameters; 29] = WITH_CARRY_PARAMETERS_VEC; - -/// Vector containing all parameter sets where the carry space is strictly greater than one -pub const WITH_CARRY_PARAMETERS_VEC: [ClassicPBSParameters; 29] = [ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, -]; - -/// Vector containing all parameter sets where the carry space is strictly greater than one -pub const BIVARIATE_PBS_COMPLIANT_PARAMETER_SET_VEC: [ClassicPBSParameters; 17] = [ - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, -]; - -/// Nomenclature: PARAM_MESSAGE_X_CARRY_Y: the message (respectively carry) modulus is -/// encoded over X (reps. Y) bits, i.e., message_modulus = 2^{X} (resp. carry_modulus = 2^{Y}). -/// All parameter sets guarantee 128-bits of security and an error probability smaller than -/// 2^{-40} for a PBS. -/// -/// Return a parameter set from a message and carry moduli. -/// -/// # Example -/// -/// ```rust -/// use tfhe::shortint::parameters::{ -/// get_parameters_from_message_and_carry, V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, -/// }; -/// let message_space = 7; -/// let carry_space = 2; -/// let param = get_parameters_from_message_and_carry(message_space, carry_space); -/// assert_eq!(param, V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64); -/// ``` -pub fn get_parameters_from_message_and_carry( - msg_space: usize, - carry_space: usize, -) -> ClassicPBSParameters { - let mut out = PARAM_MESSAGE_2_CARRY_2_KS_PBS; - let mut flag: bool = false; - let mut rescaled_message_space = f64::ceil(f64::log2(msg_space as f64)) as u64; - rescaled_message_space = 1 << rescaled_message_space; - let mut rescaled_carry_space = f64::ceil(f64::log2(carry_space as f64)) as u64; - rescaled_carry_space = 1 << rescaled_carry_space; - - for param in ALL_PARAMETER_VEC { - if param.message_modulus.0 == rescaled_message_space - && param.carry_modulus.0 == rescaled_carry_space - { - out = param; - flag = true; - break; - } - } - if !flag { - println!( - "### WARNING: NO PARAMETERS FOUND for msg_space = {rescaled_message_space} and \ - carry_space = {rescaled_carry_space} ### " - ); - } - out -} - -pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS: ClassicPBSParameters = - PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - -pub const PARAM_MESSAGE_2_CARRY_2: ClassicPBSParameters = PARAM_MESSAGE_2_CARRY_2_KS_PBS; - -pub const COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS: CompressionParameters = - list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - -pub const COMP_PARAM_MESSAGE_2_CARRY_2: CompressionParameters = COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS; - -// GPU -pub const PARAM_GPU_MULTI_BIT_MESSAGE_2_CARRY_2_GROUP_3_KS_PBS: MultiBitPBSParameters = - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - /// The Zk scheme for compact private key encryption supported by these parameters. /// /// The Zk Scheme is available in 2 versions. In case of doubt, you should prefer the V2 which is diff --git a/tfhe/src/shortint/parameters/multi_bit.rs b/tfhe/src/shortint/parameters/multi_bit.rs new file mode 100644 index 000000000..e20965f6c --- /dev/null +++ b/tfhe/src/shortint/parameters/multi_bit.rs @@ -0,0 +1,110 @@ +use crate::core_crypto::entities::{ + LweCiphertextConformanceParams, MsDecompressionType, MultiBitBootstrapKeyConformanceParams, +}; +use crate::shortint::ciphertext::{Degree, NoiseLevel}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextConformanceParams, CiphertextModulus, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, + LweBskGroupingFactor, LweDimension, MaxNoiseLevel, MessageModulus, + MultiBitPBSParametersVersions, PBSOrder, PolynomialSize, +}; +use crate::shortint::server_key::PBSConformanceParams; + +use serde::{Deserialize, Serialize}; +use tfhe_versionable::Versionize; + +/// A structure defining the set of cryptographic parameters for homomorphic integer circuit +/// evaluation. This structure contains information to run the so-called multi-bit PBS with improved +/// latency provided enough threads are available on the machine performing the FHE computations +#[derive(Serialize, Copy, Clone, Deserialize, Debug, PartialEq, Versionize)] +#[versionize(MultiBitPBSParametersVersions)] +pub struct MultiBitPBSParameters { + pub lwe_dimension: LweDimension, + pub glwe_dimension: GlweDimension, + pub polynomial_size: PolynomialSize, + pub lwe_noise_distribution: DynamicDistribution, + pub glwe_noise_distribution: DynamicDistribution, + pub pbs_base_log: DecompositionBaseLog, + pub pbs_level: DecompositionLevelCount, + pub ks_base_log: DecompositionBaseLog, + pub ks_level: DecompositionLevelCount, + pub message_modulus: MessageModulus, + pub carry_modulus: CarryModulus, + pub max_noise_level: MaxNoiseLevel, + pub log2_p_fail: f64, + pub ciphertext_modulus: CiphertextModulus, + pub encryption_key_choice: EncryptionKeyChoice, + pub grouping_factor: LweBskGroupingFactor, + pub deterministic_execution: bool, +} + +impl MultiBitPBSParameters { + pub const fn with_deterministic_execution(self) -> Self { + Self { + deterministic_execution: true, + ..self + } + } + + pub const fn with_non_deterministic_execution(self) -> Self { + Self { + deterministic_execution: false, + ..self + } + } + + pub fn to_shortint_conformance_param(&self) -> CiphertextConformanceParams { + let (pbs_order, expected_dim) = match self.encryption_key_choice { + EncryptionKeyChoice::Big => ( + PBSOrder::KeyswitchBootstrap, + self.glwe_dimension + .to_equivalent_lwe_dimension(self.polynomial_size), + ), + EncryptionKeyChoice::Small => (PBSOrder::BootstrapKeyswitch, self.lwe_dimension), + }; + + let message_modulus = self.message_modulus; + let ciphertext_modulus = self.ciphertext_modulus; + let carry_modulus = self.carry_modulus; + + let degree = Degree::new(message_modulus.0 - 1); + + let noise_level = NoiseLevel::NOMINAL; + + CiphertextConformanceParams { + ct_params: LweCiphertextConformanceParams { + lwe_dim: expected_dim, + ct_modulus: ciphertext_modulus, + ms_decompression_method: MsDecompressionType::MultiBitPbs(self.grouping_factor), + }, + message_modulus, + carry_modulus, + pbs_order, + degree, + noise_level, + } + } +} + +impl TryFrom<&PBSConformanceParams> for MultiBitBootstrapKeyConformanceParams { + type Error = (); + + fn try_from(value: &PBSConformanceParams) -> Result { + Ok(Self { + decomp_base_log: value.base_log, + decomp_level_count: value.level, + input_lwe_dimension: value.in_lwe_dimension, + output_glwe_size: value.out_glwe_dimension.to_glwe_size(), + polynomial_size: value.out_polynomial_size, + grouping_factor: match value.pbs_type { + crate::shortint::server_key::PbsTypeConformanceParams::Classic { .. } => { + return Err(()); + } + crate::shortint::server_key::PbsTypeConformanceParams::MultiBit { + lwe_bsk_grouping_factor, + } => lwe_bsk_grouping_factor, + }, + ciphertext_modulus: value.ciphertext_modulus, + }) + } +} diff --git a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/mod.rs deleted file mode 100644 index 3b0755459..000000000 --- a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/mod.rs +++ /dev/null @@ -1,8 +0,0 @@ -pub mod ks_pbs; -pub mod ks_pbs_gpu; - -pub use ks_pbs_gpu::{ - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, -}; diff --git a/tfhe/src/shortint/parameters/multi_bit/mod.rs b/tfhe/src/shortint/parameters/multi_bit/mod.rs deleted file mode 100644 index 272fda8ba..000000000 --- a/tfhe/src/shortint/parameters/multi_bit/mod.rs +++ /dev/null @@ -1,298 +0,0 @@ -use crate::core_crypto::commons::math::random::{Deserialize, Serialize}; -use crate::core_crypto::entities::{ - LweCiphertextConformanceParams, MsDecompressionType, MultiBitBootstrapKeyConformanceParams, -}; -use crate::core_crypto::prelude::{DynamicDistribution, LweBskGroupingFactor}; -use crate::shortint::ciphertext::{Degree, NoiseLevel}; -use crate::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::{ - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, -}; -use crate::shortint::parameters::multi_bit::gaussian::p_fail_2_minus_64::ks_pbs_gpu::{ - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, -}; -use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::{ - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, -}; -use crate::shortint::parameters::multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::{ - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, -}; -use crate::shortint::parameters::{CiphertextConformanceParams, MultiBitPBSParametersVersions}; -use crate::shortint::prelude::*; -use crate::shortint::server_key::PBSConformanceParams; -use crate::shortint::{ - CarryModulus, CiphertextModulus, EncryptionKeyChoice, MaxNoiseLevel, MessageModulus, PBSOrder, -}; -use crate::Versionize; - -pub mod gaussian; -pub mod tuniform; - -/// A structure defining the set of cryptographic parameters for homomorphic integer circuit -/// evaluation. This structure contains information to run the so-called multi-bit PBS with improved -/// latency provided enough threads are available on the machine performing the FHE computations -#[derive(Serialize, Copy, Clone, Deserialize, Debug, PartialEq, Versionize)] -#[versionize(MultiBitPBSParametersVersions)] -pub struct MultiBitPBSParameters { - pub lwe_dimension: LweDimension, - pub glwe_dimension: GlweDimension, - pub polynomial_size: PolynomialSize, - pub lwe_noise_distribution: DynamicDistribution, - pub glwe_noise_distribution: DynamicDistribution, - pub pbs_base_log: DecompositionBaseLog, - pub pbs_level: DecompositionLevelCount, - pub ks_base_log: DecompositionBaseLog, - pub ks_level: DecompositionLevelCount, - pub message_modulus: MessageModulus, - pub carry_modulus: CarryModulus, - pub max_noise_level: MaxNoiseLevel, - pub log2_p_fail: f64, - pub ciphertext_modulus: CiphertextModulus, - pub encryption_key_choice: EncryptionKeyChoice, - pub grouping_factor: LweBskGroupingFactor, - pub deterministic_execution: bool, -} - -impl MultiBitPBSParameters { - pub const fn with_deterministic_execution(self) -> Self { - Self { - deterministic_execution: true, - ..self - } - } - - pub const fn with_non_deterministic_execution(self) -> Self { - Self { - deterministic_execution: false, - ..self - } - } - - pub fn to_shortint_conformance_param(&self) -> CiphertextConformanceParams { - let (pbs_order, expected_dim) = match self.encryption_key_choice { - EncryptionKeyChoice::Big => ( - PBSOrder::KeyswitchBootstrap, - self.glwe_dimension - .to_equivalent_lwe_dimension(self.polynomial_size), - ), - EncryptionKeyChoice::Small => (PBSOrder::BootstrapKeyswitch, self.lwe_dimension), - }; - - let message_modulus = self.message_modulus; - let ciphertext_modulus = self.ciphertext_modulus; - let carry_modulus = self.carry_modulus; - - let degree = Degree::new(message_modulus.0 - 1); - - let noise_level = NoiseLevel::NOMINAL; - - CiphertextConformanceParams { - ct_params: LweCiphertextConformanceParams { - lwe_dim: expected_dim, - ct_modulus: ciphertext_modulus, - ms_decompression_method: MsDecompressionType::MultiBitPbs(self.grouping_factor), - }, - message_modulus, - carry_modulus, - pbs_order, - degree, - noise_level, - } - } -} - -impl TryFrom<&PBSConformanceParams> for MultiBitBootstrapKeyConformanceParams { - type Error = (); - - fn try_from(value: &PBSConformanceParams) -> Result { - Ok(Self { - decomp_base_log: value.base_log, - decomp_level_count: value.level, - input_lwe_dimension: value.in_lwe_dimension, - output_glwe_size: value.out_glwe_dimension.to_glwe_size(), - polynomial_size: value.out_polynomial_size, - grouping_factor: match value.pbs_type { - crate::shortint::server_key::PbsTypeConformanceParams::Classic { .. } => { - return Err(()); - } - crate::shortint::server_key::PbsTypeConformanceParams::MultiBit { - lwe_bsk_grouping_factor, - } => lwe_bsk_grouping_factor, - }, - ciphertext_modulus: value.ciphertext_modulus, - }) - } -} -pub const ALL_MULTI_BIT_PARAMETER_VEC: [MultiBitPBSParameters; 86] = [ - // CPU Gaussian - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, - // CPU TUniform - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, - // GPU TUniform - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, - // GPU Gaussian - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, -]; diff --git a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/mod.rs deleted file mode 100644 index 1d36207e8..000000000 --- a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/mod.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub mod ks_pbs; -pub mod ks_pbs_gpu; - -pub use ks_pbs_gpu::PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; diff --git a/tfhe/src/shortint/parameters/parameters_wopbs.rs b/tfhe/src/shortint/parameters/parameters_wopbs.rs index f16cab455..ac6fba8c9 100644 --- a/tfhe/src/shortint/parameters/parameters_wopbs.rs +++ b/tfhe/src/shortint/parameters/parameters_wopbs.rs @@ -3,13 +3,10 @@ pub use super::parameters_wopbs_message_carry::*; pub use super::parameters_wopbs_only::*; use super::WopbsParametersVersions; -pub use crate::core_crypto::commons::dispersion::StandardDev; -pub use crate::core_crypto::commons::parameters::{ - DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension, - LweDimension, PolynomialSize, -}; use crate::shortint::parameters::{ - CarryModulus, CiphertextModulus, EncryptionKeyChoice, MessageModulus, + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, MessageModulus, + PolynomialSize, }; use serde::{Deserialize, Serialize}; use tfhe_versionable::Versionize; diff --git a/tfhe/src/shortint/parameters/parameters_wopbs_message_carry.rs b/tfhe/src/shortint/parameters/parameters_wopbs_message_carry.rs index d4192994b..1e344e110 100644 --- a/tfhe/src/shortint/parameters/parameters_wopbs_message_carry.rs +++ b/tfhe/src/shortint/parameters/parameters_wopbs_message_carry.rs @@ -1,11 +1,8 @@ pub use super::parameters_wopbs::WopbsParameters; -pub use crate::core_crypto::commons::dispersion::StandardDev; -pub use crate::core_crypto::commons::parameters::{ - DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension, - LweDimension, PolynomialSize, -}; use crate::shortint::parameters::{ - CarryModulus, CiphertextModulus, EncryptionKeyChoice, MessageModulus, + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, MessageModulus, + PolynomialSize, StandardDev, }; // These parameters have security between 123 and 128 bits diff --git a/tfhe/src/shortint/parameters/parameters_wopbs_only.rs b/tfhe/src/shortint/parameters/parameters_wopbs_only.rs index 26be1b630..a3e70ad8b 100644 --- a/tfhe/src/shortint/parameters/parameters_wopbs_only.rs +++ b/tfhe/src/shortint/parameters/parameters_wopbs_only.rs @@ -1,11 +1,8 @@ pub use super::parameters_wopbs::WopbsParameters; -pub use crate::core_crypto::commons::dispersion::StandardDev; -pub use crate::core_crypto::commons::parameters::{ - DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension, - LweDimension, PolynomialSize, -}; use crate::shortint::parameters::{ - CarryModulus, CiphertextModulus, EncryptionKeyChoice, MessageModulus, + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, MessageModulus, + PolynomialSize, StandardDev, }; pub const LEGACY_WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_0_KS_PBS: WopbsParameters = diff --git a/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs index 2221c1556..d3d91ab3f 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -1,6 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + // p-fail = 2^-64.093, algorithmic cost ~ 43, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = ClassicPBSParameters { diff --git a/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs index 4434c80f8..90d78bd36 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -1,6 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + // p-fail = 2^-66.538, algorithmic cost ~ 74, 2-norm = 3 pub const V0_10_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = ClassicPBSParameters { diff --git a/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs index 2d4f5e603..5f5341ecc 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -1,6 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + // p-fail = 2^-64.612, algorithmic cost ~ 39, 2-norm = 1 pub const V0_10_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = ClassicPBSParameters { diff --git a/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs index 862a97160..ded3f550c 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -1,6 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + // p-fail = 2^-64.05, algorithmic cost ~ 67, 2-norm = 3 pub const V0_10_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = ClassicPBSParameters { diff --git a/tfhe/src/shortint/parameters/v0_10/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_10/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs index 521537b8e..f4caaafbc 100644 --- a/tfhe/src/shortint/parameters/v0_10/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_10/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs @@ -1,5 +1,8 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::{CarryModulus, ClassicPBSParameters, MaxNoiseLevel, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, +}; // security = 132 bits, p-fail = 2^-64.138, algorithmic cost ~ 113, 2-norm = 5 pub const V0_10_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters = diff --git a/tfhe/src/shortint/parameters/v0_10/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_10/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs index 86fd66971..92753b695 100644 --- a/tfhe/src/shortint/parameters/v0_10/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_10/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs @@ -1,9 +1,7 @@ -use crate::core_crypto::commons::parameters::{ - CiphertextModulus, DynamicDistribution, LweDimension, -}; use crate::shortint::parameters::{ - CarryModulus, CompactCiphertextListExpansionKind, CompactPublicKeyEncryptionParameters, - MessageModulus, SupportedCompactPkeZkScheme, + CarryModulus, CiphertextModulus, CompactCiphertextListExpansionKind, + CompactPublicKeyEncryptionParameters, DynamicDistribution, LweDimension, MessageModulus, + SupportedCompactPkeZkScheme, }; /// This legacy parameter set were used with the v1 pke zk scheme on TFHE-rs v0.10 and lower diff --git a/tfhe/src/shortint/parameters/v0_10/list_compression.rs b/tfhe/src/shortint/parameters/v0_10/list_compression.rs index 7f47eecb6..a740e15d4 100644 --- a/tfhe/src/shortint/parameters/v0_10/list_compression.rs +++ b/tfhe/src/shortint/parameters/v0_10/list_compression.rs @@ -1,7 +1,6 @@ -use crate::core_crypto::prelude::{CiphertextModulusLog, LweCiphertextCount}; use crate::shortint::parameters::{ - CompressionParameters, DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, - GlweDimension, PolynomialSize, + CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, }; pub const V0_10_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs index c797f7796..1cf12ee46 100644 --- a/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -1,7 +1,8 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; -use crate::shortint::MultiBitPBSParameters; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; // p-fail = 2^-65.348, algorithmic cost ~ 41, 2-norm = 1 pub const V0_10_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs index 0ea4bd2c7..76544186e 100644 --- a/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -1,7 +1,8 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { diff --git a/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs index c732f235c..3324daa19 100644 --- a/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/v0_10/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -1,7 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, +}; + pub const V0_10_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(882), diff --git a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/mod.rs b/tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/classic/compact_pk/gaussian/mod.rs rename to tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/mod.rs diff --git a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs similarity index 99% rename from tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs rename to tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs index 5f6253ab6..714a7015f 100644 --- a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -1,6 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + // p-fail = 2^-64.093, algorithmic cost ~ 43, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = ClassicPBSParameters { diff --git a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/p_fail_2_minus_64/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/mod.rs rename to tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/p_fail_2_minus_64/mod.rs diff --git a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs similarity index 94% rename from tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs rename to tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs index bf7fe3b23..070e33dd5 100644 --- a/tfhe/src/shortint/parameters/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/v0_11/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -1,6 +1,8 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; // p-fail = 2^-66.829, algorithmic cost ~ 74, 2-norm = 3 pub const V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = diff --git a/tfhe/src/shortint/parameters/classic/compact_pk/mod.rs b/tfhe/src/shortint/parameters/v0_11/classic/compact_pk/mod.rs similarity index 92% rename from tfhe/src/shortint/parameters/classic/compact_pk/mod.rs rename to tfhe/src/shortint/parameters/v0_11/classic/compact_pk/mod.rs index 6b712dd3a..7c7dde5a3 100644 --- a/tfhe/src/shortint/parameters/classic/compact_pk/mod.rs +++ b/tfhe/src/shortint/parameters/v0_11/classic/compact_pk/mod.rs @@ -1,9 +1,9 @@ -pub use crate::shortint::parameters::classic::compact_pk::gaussian::p_fail_2_minus_64::ks_pbs::*; -pub use crate::shortint::parameters::classic::compact_pk::gaussian::p_fail_2_minus_64::pbs_ks::*; -use crate::shortint::ClassicPBSParameters; - pub mod gaussian; +use crate::shortint::parameters::classic::ClassicPBSParameters; +pub use gaussian::p_fail_2_minus_64::ks_pbs::*; +pub use gaussian::p_fail_2_minus_64::pbs_ks::*; + pub const ALL_PARAMETER_VEC_COMPACT_PK: [ClassicPBSParameters; 40] = [ V0_11_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/shortint/parameters/classic/gaussian/mod.rs b/tfhe/src/shortint/parameters/v0_11/classic/gaussian/mod.rs similarity index 96% rename from tfhe/src/shortint/parameters/classic/gaussian/mod.rs rename to tfhe/src/shortint/parameters/v0_11/classic/gaussian/mod.rs index f4ecacbf4..c16ea9f37 100644 --- a/tfhe/src/shortint/parameters/classic/gaussian/mod.rs +++ b/tfhe/src/shortint/parameters/v0_11/classic/gaussian/mod.rs @@ -1,7 +1,9 @@ -use crate::shortint::parameters::*; +pub mod p_fail_2_minus_64; + use crate::shortint::ClassicPBSParameters; -pub mod p_fail_2_minus_64; +pub use p_fail_2_minus_64::ks_pbs::*; +pub use p_fail_2_minus_64::pbs_ks::*; pub const ALL_PARAMETER_VEC_GAUSSIAN: [ClassicPBSParameters; 40] = [ V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, diff --git a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_11/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs similarity index 99% rename from tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs rename to tfhe/src/shortint/parameters/v0_11/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs index bcda4c127..8645878a8 100644 --- a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_11/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -1,6 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + // p-fail = 2^-64.612, algorithmic cost ~ 39, 2-norm = 1 pub const V0_11_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = ClassicPBSParameters { diff --git a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_11/classic/gaussian/p_fail_2_minus_64/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/mod.rs rename to tfhe/src/shortint/parameters/v0_11/classic/gaussian/p_fail_2_minus_64/mod.rs diff --git a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/v0_11/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs similarity index 94% rename from tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs rename to tfhe/src/shortint/parameters/v0_11/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs index 31faf854b..aba819151 100644 --- a/tfhe/src/shortint/parameters/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs +++ b/tfhe/src/shortint/parameters/v0_11/classic/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -1,6 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + // p-fail = 2^-64.05, algorithmic cost ~ 67, 2-norm = 3 pub const V0_11_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = ClassicPBSParameters { diff --git a/tfhe/src/shortint/parameters/classic/mod.rs b/tfhe/src/shortint/parameters/v0_11/classic/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/classic/mod.rs rename to tfhe/src/shortint/parameters/v0_11/classic/mod.rs diff --git a/tfhe/src/shortint/parameters/classic/tuniform/mod.rs b/tfhe/src/shortint/parameters/v0_11/classic/tuniform/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/classic/tuniform/mod.rs rename to tfhe/src/shortint/parameters/v0_11/classic/tuniform/mod.rs diff --git a/tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_11/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs similarity index 75% rename from tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs rename to tfhe/src/shortint/parameters/v0_11/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs index 94f5123a4..91b51ba01 100644 --- a/tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_11/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs @@ -1,9 +1,8 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus}; - -pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters = - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, +}; // security = 132 bits, p-fail = 2^-71.625 pub const V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters = diff --git a/tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_11/classic/tuniform/p_fail_2_minus_64/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/classic/tuniform/p_fail_2_minus_64/mod.rs rename to tfhe/src/shortint/parameters/v0_11/classic/tuniform/p_fail_2_minus_64/mod.rs diff --git a/tfhe/src/shortint/parameters/multi_bit/gaussian/mod.rs b/tfhe/src/shortint/parameters/v0_11/compact_public_key_only/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/multi_bit/gaussian/mod.rs rename to tfhe/src/shortint/parameters/v0_11/compact_public_key_only/mod.rs diff --git a/tfhe/src/shortint/parameters/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_11/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs similarity index 85% rename from tfhe/src/shortint/parameters/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs rename to tfhe/src/shortint/parameters/v0_11/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs index 6ba5847aa..35ee55a52 100644 --- a/tfhe/src/shortint/parameters/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_11/compact_public_key_only/p_fail_2_minus_64/ks_pbs.rs @@ -1,9 +1,7 @@ -use crate::core_crypto::commons::parameters::{ - CiphertextModulus, DynamicDistribution, LweDimension, -}; use crate::shortint::parameters::{ - CarryModulus, CompactCiphertextListExpansionKind, CompactPublicKeyEncryptionParameters, - MessageModulus, SupportedCompactPkeZkScheme, + CarryModulus, CiphertextModulus, CompactCiphertextListExpansionKind, + CompactPublicKeyEncryptionParameters, DynamicDistribution, LweDimension, MessageModulus, + SupportedCompactPkeZkScheme, }; /// This parameter set should be used when doing zk proof of public key encryption @@ -23,6 +21,10 @@ pub const V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV2: } .validate(); +pub const V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1: + CompactPublicKeyEncryptionParameters = + V0_11_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1; + /// This parameter set can be used with the v1 pke zk scheme on TFHE-rs v0.11 and after /// Should be used with /// V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1 diff --git a/tfhe/src/shortint/parameters/compact_public_key_only/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_11/compact_public_key_only/p_fail_2_minus_64/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/compact_public_key_only/p_fail_2_minus_64/mod.rs rename to tfhe/src/shortint/parameters/v0_11/compact_public_key_only/p_fail_2_minus_64/mod.rs diff --git a/tfhe/src/shortint/parameters/multi_bit/tuniform/mod.rs b/tfhe/src/shortint/parameters/v0_11/key_switching/mod.rs similarity index 50% rename from tfhe/src/shortint/parameters/multi_bit/tuniform/mod.rs rename to tfhe/src/shortint/parameters/v0_11/key_switching/mod.rs index 5a9504f99..55c2d9ab4 100644 --- a/tfhe/src/shortint/parameters/multi_bit/tuniform/mod.rs +++ b/tfhe/src/shortint/parameters/v0_11/key_switching/mod.rs @@ -1,2 +1 @@ -//! #Warning experimental pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/key_switching/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_11/key_switching/p_fail_2_minus_64/ks_pbs.rs similarity index 94% rename from tfhe/src/shortint/parameters/key_switching/p_fail_2_minus_64/ks_pbs.rs rename to tfhe/src/shortint/parameters/v0_11/key_switching/p_fail_2_minus_64/ks_pbs.rs index 0286a7170..d83f9f74f 100644 --- a/tfhe/src/shortint/parameters/key_switching/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_11/key_switching/p_fail_2_minus_64/ks_pbs.rs @@ -43,6 +43,10 @@ pub const V0_11_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M6 destination_key: EncryptionKeyChoice::Big, }; +pub const V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1: + ShortintKeySwitchingParameters = + V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1; + // Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters // arriving under the small key, requires a PBS to get to the big key pub const V0_11_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1: diff --git a/tfhe/src/shortint/parameters/key_switching/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v0_11/key_switching/p_fail_2_minus_64/mod.rs similarity index 100% rename from tfhe/src/shortint/parameters/key_switching/p_fail_2_minus_64/mod.rs rename to tfhe/src/shortint/parameters/v0_11/key_switching/p_fail_2_minus_64/mod.rs diff --git a/tfhe/src/shortint/parameters/v0_11/list_compression.rs b/tfhe/src/shortint/parameters/v0_11/list_compression.rs new file mode 100644 index 000000000..f0e093252 --- /dev/null +++ b/tfhe/src/shortint/parameters/v0_11/list_compression.rs @@ -0,0 +1,17 @@ +use crate::shortint::parameters::{ + CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, +}; + +pub const V0_11_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = + CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43), + }; diff --git a/tfhe/src/shortint/parameters/v0_11/mod.rs b/tfhe/src/shortint/parameters/v0_11/mod.rs index 9810cac0e..96e398b8d 100644 --- a/tfhe/src/shortint/parameters/v0_11/mod.rs +++ b/tfhe/src/shortint/parameters/v0_11/mod.rs @@ -2,4 +2,8 @@ //! //! These parameters may be used for backward compatibility. +pub mod classic; +pub mod compact_public_key_only; +pub mod key_switching; +pub mod list_compression; pub mod multi_bit; diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs index 74064d369..c47ec4b33 100644 --- a/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -1,7 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; + // p-fail = 2^-66.132, algorithmic cost ~ 41, 2-norm = 1 pub const V0_11_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs index 490455332..8f6cfe94c 100644 --- a/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -1,7 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; + // Group 2 // p-fail = 2^-64.545, algorithmic cost ~ 62, 2-norm = 3 diff --git a/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs index acceed2e2..cb7c4c166 100644 --- a/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/v0_11/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -1,7 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, +}; + pub const V0_11_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(879), diff --git a/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/mod.rs new file mode 100644 index 000000000..d50af4d44 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/mod.rs @@ -0,0 +1,2 @@ +pub mod p_fail_2_minus_128; +pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/ks_pbs.rs new file mode 100644 index 000000000..443034345 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/ks_pbs.rs @@ -0,0 +1,1088 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, + LweCiphertextCount, LweDimension, MaxNoiseLevel, MessageModulus, + ModulusSwitchNoiseReductionParams, NoiseEstimationMeasureBound, PolynomialSize, RSigmaFactor, + StandardDev, Variance, +}; + +// p-fail = 2^-128.079, algorithmic cost ~ 53, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000908718841765972) +pub const V1_0_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(722), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(256), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.4543734131820254e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + pbs_base_log: DecompositionBaseLog(6), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.079, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1434), + ms_bound: NoiseEstimationMeasureBound(2305843009213693952f64), + ms_r_sigma_factor: RSigmaFactor(13.112794239992263f64), + ms_input_variance: Variance(0.0000333335337534201f64), + }), + }; +// p-fail = 2^-128.979, algorithmic cost ~ 64, 2-norm = 3 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000225552987883164) +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(838), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.3169882267274578e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -128.979, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1444), + ms_bound: NoiseEstimationMeasureBound(1152921504606846976f64), + ms_r_sigma_factor: RSigmaFactor(13.159995024328786f64), + ms_input_variance: Variance(0.00000586599825120700f64), + }), + }; +// p-fail = 2^-128.316, algorithmic cost ~ 79, 2-norm = 7 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566871520497113) +pub const V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(885), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4742441118914234e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(7), + log2_p_fail: -128.316, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1447), + ms_bound: NoiseEstimationMeasureBound(576460752303423488f64), + ms_r_sigma_factor: RSigmaFactor(13.12525356819331f64), + ms_input_variance: Variance(0.00000126293854532351f64), + }), + }; +// p-fail = 2^-128.07, algorithmic cost ~ 119, 2-norm = 15 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141997526567708) +pub const V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(906), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0261593945208966e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(15), + log2_p_fail: -128.07, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1449), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.112322922625795f64), + ms_input_variance: Variance(2.92454068675944E-7f64), + }), + }; +// p-fail = 2^-128.387, algorithmic cost ~ 373, 2-norm = 31 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54094258729146E-7) +pub const V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(31), + log2_p_fail: -128.387, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1450), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.128967938469232f64), + ms_input_variance: Variance(6.47633788819369E-8f64), + }), + }; +// p-fail = 2^-128.161, algorithmic cost ~ 879, 2-norm = 63 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.86838394271893E-8) +pub const V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1012), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.647968356631524e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(63), + log2_p_fail: -128.161, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1456), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.117098844906744f64), + ms_input_variance: Variance(9.98708187218139E-9f64), + }), + }; +// p-fail = 2^-128.086, algorithmic cost ~ 2678, 2-norm = 127 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21842617086314E-8) +pub const V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1061), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.07600596055958e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(127), + log2_p_fail: -128.086, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.113165699179302f64), + ms_input_variance: Variance(1.55934719162614E-9f64), + }), + }; +// p-fail = 2^-128.732, algorithmic cost ~ 14472, 2-norm = 255 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.51751832878040E-9) +pub const V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(128), + max_noise_level: MaxNoiseLevel::new(255), + log2_p_fail: -128.732, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.147045049847707f64), + ms_input_variance: Variance(4.17631680856592E-9f64), + }), + }; +// p-fail = 2^-128.001, algorithmic cost ~ 64, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000227322816313304) +pub const V1_0_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(837), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.3747142481837397e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.001, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1444), + ms_bound: NoiseEstimationMeasureBound(1152921504606846976f64), + ms_r_sigma_factor: RSigmaFactor(13.108666160583589f64), + ms_input_variance: Variance(0.00000606284930914612f64), + }), + }; +// p-fail = 2^-128.388, algorithmic cost ~ 79, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566548251955660) +pub const V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(884), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4999005934396873e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.388, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1447), + ms_bound: NoiseEstimationMeasureBound(576460752303423488f64), + ms_r_sigma_factor: RSigmaFactor(13.128997623956547f64), + ms_input_variance: Variance(0.00000126467291364026f64), + }), + }; +// p-fail = 2^-128.377, algorithmic cost ~ 110, 2-norm = 5 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141649065433221) +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(866), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.046151696979124e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.377, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1446), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.128441378136914f64), + ms_input_variance: Variance(3.38639994643900E-7f64), + }), + }; +// p-fail = 2^-128.419, algorithmic cost ~ 373, 2-norm = 10 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54002900977798E-7) +pub const V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(10), + log2_p_fail: -128.419, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1450), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.130661929691387f64), + ms_input_variance: Variance(6.46720211305897E-8f64), + }), + }; +// p-fail = 2^-128.12, algorithmic cost ~ 875, 2-norm = 21 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.87133101929087E-8) +pub const V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(21), + log2_p_fail: -128.12, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.114919898723763f64), + ms_input_variance: Variance(1.04046037106572E-8f64), + }), + }; +// p-fail = 2^-128.035, algorithmic cost ~ 2665, 2-norm = 42 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21933451675456E-8) +pub const V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(42), + log2_p_fail: -128.035, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.110481897090999f64), + ms_input_variance: Variance(1.66544341872946E-9f64), + }), + }; +// p-fail = 2^-129.081, algorithmic cost ~ 11765, 2-norm = 85 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50217479220037E-9) +pub const V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1108), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.144949396867639e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(85), + log2_p_fail: -129.081, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.16536341829425f64), + ms_input_variance: Variance(4.15612263357644E-9f64), + }), + }; +// p-fail = 2^-128.444, algorithmic cost ~ 79, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566292898921224) +pub const V1_0_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(884), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4999005934396873e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.444, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1447), + ms_bound: NoiseEstimationMeasureBound(576460752303423488f64), + ms_r_sigma_factor: RSigmaFactor(13.1319573569348f64), + ms_input_variance: Variance(0.00000126211938329590f64), + }), + }; +// p-fail = 2^-128.17, algorithmic cost ~ 110, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141883958441919) +pub const V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(863), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.154850045818961e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.17, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1446), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.117569618891837f64), + ms_input_variance: Variance(3.44714215029333E-7f64), + }), + }; +// p-fail = 2^-128.024, algorithmic cost ~ 282, 2-norm = 4 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.55124805211991E-7) +pub const V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(929), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.900397337590325e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(9), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.024, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1451), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.109904440819118f64), + ms_input_variance: Variance(6.61043662229878E-8f64), + }), + }; +// p-fail = 2^-128.291, algorithmic cost ~ 875, 2-norm = 9 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85920026139855E-8) +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -128.291, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.123895849681867f64), + ms_input_variance: Variance(1.02832961317340E-8f64), + }), + }; +// p-fail = 2^-128.019, algorithmic cost ~ 2110, 2-norm = 18 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21962954961614E-8) +pub const V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1073), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.752694209572395e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(18), + log2_p_fail: -128.019, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1459), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.109610546388755f64), + ms_input_variance: Variance(1.33855033550224E-9f64), + }), + }; +// p-fail = 2^-128.101, algorithmic cost ~ 11669, 2-norm = 36 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.54542171626785E-9) +pub const V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1099), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.673257191405497e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(36), + log2_p_fail: -128.101, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.113926763265077f64), + ms_input_variance: Variance(4.21028349406520E-9f64), + }), + }; +// p-fail = 2^-128.417, algorithmic cost ~ 110, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141604488505394) +pub const V1_0_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(863), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.154850045818961e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.417, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1446), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.130507624553754f64), + ms_input_variance: Variance(3.41919515664087E-7f64), + }), + }; +// p-fail = 2^-128.042, algorithmic cost ~ 260, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.55074180343316E-7) +pub const V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(935), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.221794297398788e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.042, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1451), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.11083898291302f64), + ms_input_variance: Variance(6.41910962050811E-8f64), + }), + }; +// p-fail = 2^-128.322, algorithmic cost ~ 875, 2-norm = 4 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85700998566799E-8) +pub const V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.322, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.125518472538255f64), + ms_input_variance: Variance(1.02613933744284E-8f64), + }), + }; +// p-fail = 2^-128.079, algorithmic cost ~ 2081, 2-norm = 8 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21856153883081E-8) +pub const V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1058), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.451906811620241e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -128.079, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.11276563597672f64), + ms_input_variance: Variance(1.61890853221631E-9f64), + }), + }; +// p-fail = 2^-128.676, algorithmic cost ~ 11659, 2-norm = 17 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.51996713858843E-9) +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1098), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.73718341270979e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -128.676, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2961), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.144128530287597f64), + ms_input_variance: Variance(4.18604157598814E-9f64), + }), + }; +// p-fail = 2^-128.234, algorithmic cost ~ 259, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54529491312476E-7) +pub const V1_0_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(931), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.666347503085657e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.234, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1451), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.120906677596983f64), + ms_input_variance: Variance(6.48881706070626E-8f64), + }), + }; +// p-fail = 2^-128.327, algorithmic cost ~ 875, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85660562707158E-8) +pub const V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.327, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.125818099498767f64), + ms_input_variance: Variance(1.02573497884643E-8f64), + }), + }; +// p-fail = 2^-128.027, algorithmic cost ~ 2077, 2-norm = 4 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21948580616001E-8) +pub const V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.027, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.110035056924806f64), + ms_input_variance: Variance(1.66695631278390E-9f64), + }), + }; +// p-fail = 2^-129.1, algorithmic cost ~ 9046, 2-norm = 8 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50136439949245E-9) +pub const V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1113), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8850164020946995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -129.1, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.166333061536834f64), + ms_input_variance: Variance(4.14924894285670E-9f64), + }), + }; +// p-fail = 2^-128.329, algorithmic cost ~ 875, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85650453742248E-8) +pub const V1_0_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.329, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.125893009445125f64), + ms_input_variance: Variance(1.02563388919733E-8f64), + }), + }; +// p-fail = 2^-128.11, algorithmic cost ~ 2077, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21800917385509E-8) +pub const V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.11, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.114398312177766f64), + ms_input_variance: Variance(1.65218998973470E-9f64), + }), + }; +// p-fail = 2^-129.382, algorithmic cost ~ 8949, 2-norm = 4 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.48905930129094E-9) +pub const V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1101), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.5486665054375844e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -129.382, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2961), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.181082612949039f64), + ms_input_variance: Variance(4.15149575988355E-9f64), + }), + }; +// p-fail = 2^-128.131, algorithmic cost ~ 2077, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21764001577886E-8) +pub const V1_0_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.131, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.115489806865527f64), + ms_input_variance: Variance(1.64849840897239E-9f64), + }), + }; +// p-fail = 2^-130.318, algorithmic cost ~ 8932, 2-norm = 2 +// Average number of encryptions of 0s ~ 33, peak noise ~ Variance(5.44858619003947E-9) +pub const V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1099), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.673257191405497e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -130.318, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2959), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.229947802091102f64), + ms_input_variance: Variance(4.11344796783681E-9f64), + }), + }; +// p-fail = 2^-129.114, algorithmic cost ~ 8924, 2-norm = 1 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50077134664127E-9) +pub const V1_0_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1098), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.73718341270979e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(256), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -129.114, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2961), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.167042791174891f64), + ms_input_variance: Variance(4.16684578404098E-9f64), + }), + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/mod.rs new file mode 100644 index 000000000..4e3b5c531 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod pbs_ks; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/pbs_ks.rs b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/pbs_ks.rs new file mode 100644 index 000000000..9fab0f020 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_128/pbs_ks.rs @@ -0,0 +1,128 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, + LweCiphertextCount, LweDimension, MaxNoiseLevel, MessageModulus, + ModulusSwitchNoiseReductionParams, NoiseEstimationMeasureBound, PolynomialSize, RSigmaFactor, + StandardDev, Variance, +}; + +// p-fail = 2^-139.952, algorithmic cost ~ 78, 2-norm = 3 +// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(0.0000207432665142053) +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1024), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(6), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -139.952, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1449), + ms_bound: NoiseEstimationMeasureBound(1152921504606846976f64), + ms_r_sigma_factor: RSigmaFactor(13.722759233694832f64), + ms_input_variance: Variance(3.58478001021692E-7f64), + }), + }; +// p-fail = 2^-129.632, algorithmic cost ~ 130, 2-norm = 5 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140242017242477) +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1024), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -129.632, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.194135838905868f64), + ms_input_variance: Variance(1.28370890350793E-7f64), + }), + }; +// p-fail = 2^-276.943, algorithmic cost ~ 3355, 2-norm = 9 +// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(4.04169957228641E-8) +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(2048), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(24), + ks_level: DecompositionLevelCount(1), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -276.943, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2921), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(19.430233535388318f64), + ms_input_variance: Variance(6.41760765328034E-10f64), + }), + }; +// p-fail = 2^-273.01, algorithmic cost ~ 20401, 2-norm = 17 +// Average number of encryptions of 0s ~ 16, peak noise ~ Variance(2.56297356349261E-9) +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(2048), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(16), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -273.01, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2923), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(19.289811337553306f64), + ms_input_variance: Variance(7.70213786466074E-11f64), + }), + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs new file mode 100644 index 000000000..0627f610e --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -0,0 +1,870 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-64.093, algorithmic cost ~ 43, 2-norm = 1 +pub const V1_0_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(684), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 4.7280002450549286e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.093, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.01, algorithmic cost ~ 60, 2-norm = 3 +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(781), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.868480365938865e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -64.01, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.471, algorithmic cost ~ 76, 2-norm = 7 +pub const V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(858), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.348996819227123e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(7), + log2_p_fail: -64.471, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.178, algorithmic cost ~ 107, 2-norm = 15 +pub const V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(843), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.0428360625436423e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(15), + log2_p_fail: -64.178, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.077, algorithmic cost ~ 362, 2-norm = 31 +pub const V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(902), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0994794733558207e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(31), + log2_p_fail: -64.077, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.195, algorithmic cost ~ 834, 2-norm = 63 +pub const V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(979), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.9121942871268e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(63), + log2_p_fail: -64.195, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.119, algorithmic cost ~ 2519, 2-norm = 127 +pub const V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1053), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.123305578333294e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(127), + log2_p_fail: -64.119, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.014, algorithmic cost ~ 7954, 2-norm = 255 +pub const V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1103), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.428301725313195e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(128), + max_noise_level: MaxNoiseLevel::new(255), + log2_p_fail: -64.014, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.017, algorithmic cost ~ 60, 2-norm = 1 +pub const V1_0_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(781), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.868480365938865e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.017, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.181, algorithmic cost ~ 76, 2-norm = 2 +pub const V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(857), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.389876747499049e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.181, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.014, algorithmic cost ~ 106, 2-norm = 5 +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(833), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.6158408373309336e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -64.014, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.085, algorithmic cost ~ 362, 2-norm = 10 +pub const V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(902), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0994794733558207e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(10), + log2_p_fail: -64.085, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.137, algorithmic cost ~ 833, 2-norm = 21 +pub const V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(977), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.0144389706858286e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(21), + log2_p_fail: -64.137, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.01, algorithmic cost ~ 2023, 2-norm = 42 +pub const V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1046), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 9.166094197883469e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(10), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(42), + log2_p_fail: -64.01, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.017, algorithmic cost ~ 7209, 2-norm = 85 +pub const V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1111), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.986306893048107e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(85), + log2_p_fail: -64.017, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.194, algorithmic cost ~ 76, 2-norm = 1 +pub const V1_0_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(857), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.389876747499049e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.194, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.413, algorithmic cost ~ 106, 2-norm = 2 +pub const V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(833), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.6158408373309336e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.413, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.074, algorithmic cost ~ 253, 2-norm = 4 +pub const V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(965), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.7078605862315705e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.074, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.177, algorithmic cost ~ 833, 2-norm = 9 +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(977), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.0144389706858286e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -64.177, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.075, algorithmic cost ~ 1936, 2-norm = 18 +pub const V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1055), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.84777675974155e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(18), + log2_p_fail: -64.075, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.002, algorithmic cost ~ 5925, 2-norm = 36 +pub const V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1116), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.7394858488703536e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(36), + log2_p_fail: -64.002, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.471, algorithmic cost ~ 106, 2-norm = 1 +pub const V1_0_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(833), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.6158408373309336e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.471, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.17, algorithmic cost ~ 249, 2-norm = 2 +pub const V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(948), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 4.971708676181112e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.17, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.184, algorithmic cost ~ 833, 2-norm = 4 +pub const V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(977), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.0144389706858286e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.184, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.092, algorithmic cost ~ 1931, 2-norm = 8 +pub const V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1052), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.264676629436917e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -64.092, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.014, algorithmic cost ~ 5893, 2-norm = 17 +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1110), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.038278019865525e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.014, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.128, algorithmic cost ~ 248, 2-norm = 1 +pub const V1_0_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(945), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.235822292396081e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.128, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.185, algorithmic cost ~ 833, 2-norm = 2 +pub const V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(977), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.0144389706858286e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.185, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.019, algorithmic cost ~ 1929, 2-norm = 4 +pub const V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1051), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.40850798120231e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.019, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.016, algorithmic cost ~ 5888, 2-norm = 8 +pub const V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1109), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.0911536076507566e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -64.016, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.029, algorithmic cost ~ 586, 2-norm = 1 +pub const V1_0_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(993), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.287269267206566e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.029, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.039, algorithmic cost ~ 1929, 2-norm = 2 +pub const V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1051), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.40850798120231e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.039, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.007, algorithmic cost ~ 4682, 2-norm = 4 +pub const V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1116), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.7394858488703536e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(12), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -64.007, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.044, algorithmic cost ~ 1929, 2-norm = 1 +pub const V1_0_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1051), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.40850798120231e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.044, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.035, algorithmic cost ~ 4592, 2-norm = 2 +pub const V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1112), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.935224755982453e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -64.035, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.001, algorithmic cost ~ 4580, 2-norm = 1 +pub const V1_0_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1109), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.0911536076507566e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(256), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -64.001, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/mod.rs new file mode 100644 index 000000000..4e3b5c531 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod pbs_ks; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs new file mode 100644 index 000000000..a56b3e4bb --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/gaussian/p_fail_2_minus_64/pbs_ks.rs @@ -0,0 +1,102 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-66.829, algorithmic cost ~ 74, 2-norm = 3 +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1024), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(7), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -66.829, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.438, algorithmic cost ~ 126, 2-norm = 5 +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1024), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.339775301998614e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -64.438, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-141.376, algorithmic cost ~ 3355, 2-norm = 9 +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(2048), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(24), + ks_level: DecompositionLevelCount(1), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -141.376, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-140.367, algorithmic cost ~ 20401, 2-norm = 17 +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(2048), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(16), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -140.367, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: None, + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/mod.rs new file mode 100644 index 000000000..1e195d938 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/compact_pk/mod.rs @@ -0,0 +1 @@ +pub mod gaussian; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/gaussian/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/mod.rs new file mode 100644 index 000000000..372442ce7 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/mod.rs @@ -0,0 +1,3 @@ +pub mod p_fail_2_minus_128; +pub mod p_fail_2_minus_40; +pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/ks_pbs.rs new file mode 100644 index 000000000..b2723b12f --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/ks_pbs.rs @@ -0,0 +1,1088 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, + LweCiphertextCount, LweDimension, MaxNoiseLevel, MessageModulus, + ModulusSwitchNoiseReductionParams, NoiseEstimationMeasureBound, PolynomialSize, RSigmaFactor, + StandardDev, Variance, +}; + +// p-fail = 2^-128.384, algorithmic cost ~ 40, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000906507473628086) +pub const V1_0_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(747), + glwe_dimension: GlweDimension(6), + polynomial_size: PolynomialSize(256), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.5944604865450687e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.384, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1436), + ms_bound: NoiseEstimationMeasureBound(2305843009213693952f64), + ms_r_sigma_factor: RSigmaFactor(13.128778417474985f64), + ms_input_variance: Variance(0.0000311255754471185f64), + }), + }; +// p-fail = 2^-128.979, algorithmic cost ~ 64, 2-norm = 3 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000225552987883164) +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(838), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.3169882267274578e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -128.979, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1444), + ms_bound: NoiseEstimationMeasureBound(1152921504606846976f64), + ms_r_sigma_factor: RSigmaFactor(13.159995024328786f64), + ms_input_variance: Variance(0.00000586599825120700f64), + }), + }; +// p-fail = 2^-128.316, algorithmic cost ~ 79, 2-norm = 7 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566871520497113) +pub const V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(885), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4742441118914234e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(7), + log2_p_fail: -128.316, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1447), + ms_bound: NoiseEstimationMeasureBound(576460752303423488f64), + ms_r_sigma_factor: RSigmaFactor(13.12525356819331f64), + ms_input_variance: Variance(0.00000126293854532351f64), + }), + }; +// p-fail = 2^-128.07, algorithmic cost ~ 119, 2-norm = 15 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141997526567708) +pub const V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(906), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0261593945208966e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(15), + log2_p_fail: -128.07, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1449), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.112322922625795f64), + ms_input_variance: Variance(2.92454068675944E-7f64), + }), + }; +// p-fail = 2^-128.387, algorithmic cost ~ 373, 2-norm = 31 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54094258729146E-7) +pub const V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(31), + log2_p_fail: -128.387, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1450), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.128967938469232f64), + ms_input_variance: Variance(6.47633788819369E-8f64), + }), + }; +// p-fail = 2^-128.161, algorithmic cost ~ 879, 2-norm = 63 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.86838394271893E-8) +pub const V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1012), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.647968356631524e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(63), + log2_p_fail: -128.161, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1456), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.117098844906744f64), + ms_input_variance: Variance(9.98708187218139E-9f64), + }), + }; +// p-fail = 2^-128.086, algorithmic cost ~ 2678, 2-norm = 127 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21842617086314E-8) +pub const V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1061), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.07600596055958e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(127), + log2_p_fail: -128.086, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.113165699179302f64), + ms_input_variance: Variance(1.55934719162614E-9f64), + }), + }; +// p-fail = 2^-128.732, algorithmic cost ~ 14472, 2-norm = 255 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.51751832878040E-9) +pub const V1_0_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1104), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.369659065698222e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(9), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(128), + max_noise_level: MaxNoiseLevel::new(255), + log2_p_fail: -128.732, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.147045049847707f64), + ms_input_variance: Variance(4.17631680856592E-9f64), + }), + }; +// p-fail = 2^-128.066, algorithmic cost ~ 49, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000227203724588775) +pub const V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(846), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.889344520786227e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.066, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1445), + ms_bound: NoiseEstimationMeasureBound(1152921504606846976f64), + ms_r_sigma_factor: RSigmaFactor(13.112101247626573f64), + ms_input_variance: Variance(0.00000587212620236712f64), + }), + }; +// p-fail = 2^-128.388, algorithmic cost ~ 79, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566548251955660) +pub const V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(884), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4999005934396873e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.388, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1447), + ms_bound: NoiseEstimationMeasureBound(576460752303423488f64), + ms_r_sigma_factor: RSigmaFactor(13.128997623956547f64), + ms_input_variance: Variance(0.00000126467291364026f64), + }), + }; +// p-fail = 2^-128.377, algorithmic cost ~ 110, 2-norm = 5 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141649065433221) +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(866), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.046151696979124e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.377, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1446), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.128441378136914f64), + ms_input_variance: Variance(3.38639994643900E-7f64), + }), + }; +// p-fail = 2^-128.419, algorithmic cost ~ 373, 2-norm = 10 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54002900977798E-7) +pub const V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(930), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.782362904013915e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(10), + log2_p_fail: -128.419, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1450), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.130661929691387f64), + ms_input_variance: Variance(6.46720211305897E-8f64), + }), + }; +// p-fail = 2^-128.12, algorithmic cost ~ 875, 2-norm = 21 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.87133101929087E-8) +pub const V1_0_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(21), + log2_p_fail: -128.12, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.114919898723763f64), + ms_input_variance: Variance(1.04046037106572E-8f64), + }), + }; +// p-fail = 2^-128.035, algorithmic cost ~ 2665, 2-norm = 42 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21933451675456E-8) +pub const V1_0_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(42), + log2_p_fail: -128.035, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.110481897090999f64), + ms_input_variance: Variance(1.66544341872946E-9f64), + }), + }; +// p-fail = 2^-129.081, algorithmic cost ~ 11765, 2-norm = 85 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50217479220037E-9) +pub const V1_0_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1108), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.144949396867639e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(64), + max_noise_level: MaxNoiseLevel::new(85), + log2_p_fail: -129.081, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.16536341829425f64), + ms_input_variance: Variance(4.15612263357644E-9f64), + }), + }; +// p-fail = 2^-128.444, algorithmic cost ~ 79, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000566292898921224) +pub const V1_0_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(884), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4999005934396873e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.444, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1447), + ms_bound: NoiseEstimationMeasureBound(576460752303423488f64), + ms_r_sigma_factor: RSigmaFactor(13.1319573569348f64), + ms_input_variance: Variance(0.00000126211938329590f64), + }), + }; +// p-fail = 2^-128.17, algorithmic cost ~ 110, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141883958441919) +pub const V1_0_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(863), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.154850045818961e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.17, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1446), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.117569618891837f64), + ms_input_variance: Variance(3.44714215029333E-7f64), + }), + }; +// p-fail = 2^-128.024, algorithmic cost ~ 282, 2-norm = 4 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.55124805211991E-7) +pub const V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(929), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.900397337590325e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(9), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.024, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1451), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.109904440819118f64), + ms_input_variance: Variance(6.61043662229878E-8f64), + }), + }; +// p-fail = 2^-128.291, algorithmic cost ~ 875, 2-norm = 9 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85920026139855E-8) +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -128.291, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.123895849681867f64), + ms_input_variance: Variance(1.02832961317340E-8f64), + }), + }; +// p-fail = 2^-128.019, algorithmic cost ~ 2110, 2-norm = 18 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21962954961614E-8) +pub const V1_0_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1073), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 5.752694209572395e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(18), + log2_p_fail: -128.019, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1459), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.109610546388755f64), + ms_input_variance: Variance(1.33855033550224E-9f64), + }), + }; +// p-fail = 2^-128.101, algorithmic cost ~ 11669, 2-norm = 36 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.54542171626785E-9) +pub const V1_0_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1099), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.673257191405497e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(32), + max_noise_level: MaxNoiseLevel::new(36), + log2_p_fail: -128.101, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.113926763265077f64), + ms_input_variance: Variance(4.21028349406520E-9f64), + }), + }; +// p-fail = 2^-128.417, algorithmic cost ~ 110, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141604488505394) +pub const V1_0_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(863), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.154850045818961e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.417, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1446), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.130507624553754f64), + ms_input_variance: Variance(3.41919515664087E-7f64), + }), + }; +// p-fail = 2^-128.042, algorithmic cost ~ 260, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.55074180343316E-7) +pub const V1_0_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(935), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.221794297398788e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.042, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1451), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.11083898291302f64), + ms_input_variance: Variance(6.41910962050811E-8f64), + }), + }; +// p-fail = 2^-128.322, algorithmic cost ~ 875, 2-norm = 4 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85700998566799E-8) +pub const V1_0_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.322, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.125518472538255f64), + ms_input_variance: Variance(1.02613933744284E-8f64), + }), + }; +// p-fail = 2^-128.079, algorithmic cost ~ 2081, 2-norm = 8 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21856153883081E-8) +pub const V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1058), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.451906811620241e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -128.079, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.11276563597672f64), + ms_input_variance: Variance(1.61890853221631E-9f64), + }), + }; +// p-fail = 2^-128.676, algorithmic cost ~ 11659, 2-norm = 17 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.51996713858843E-9) +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1098), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.73718341270979e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -128.676, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2961), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.144128530287597f64), + ms_input_variance: Variance(4.18604157598814E-9f64), + }), + }; +// p-fail = 2^-128.234, algorithmic cost ~ 259, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(3.54529491312476E-7) +pub const V1_0_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(931), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.666347503085657e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.234, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1451), + ms_bound: NoiseEstimationMeasureBound(144115188075855872f64), + ms_r_sigma_factor: RSigmaFactor(13.120906677596983f64), + ms_input_variance: Variance(6.48881706070626E-8f64), + }), + }; +// p-fail = 2^-128.327, algorithmic cost ~ 875, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85660562707158E-8) +pub const V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.327, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.125818099498767f64), + ms_input_variance: Variance(1.02573497884643E-8f64), + }), + }; +// p-fail = 2^-128.027, algorithmic cost ~ 2077, 2-norm = 4 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21948580616001E-8) +pub const V1_0_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -128.027, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.110035056924806f64), + ms_input_variance: Variance(1.66695631278390E-9f64), + }), + }; +// p-fail = 2^-129.1, algorithmic cost ~ 9046, 2-norm = 8 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50136439949245E-9) +pub const V1_0_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1113), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.8850164020946995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(32), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(8), + log2_p_fail: -129.1, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.166333061536834f64), + ms_input_variance: Variance(4.14924894285670E-9f64), + }), + }; +// p-fail = 2^-128.329, algorithmic cost ~ 875, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.85650453742248E-8) +pub const V1_0_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1007), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.796446316728823e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.329, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1455), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.125893009445125f64), + ms_input_variance: Variance(1.02563388919733E-8f64), + }), + }; +// p-fail = 2^-128.11, algorithmic cost ~ 2077, 2-norm = 2 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21800917385509E-8) +pub const V1_0_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -128.11, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.114398312177766f64), + ms_input_variance: Variance(1.65218998973470E-9f64), + }), + }; +// p-fail = 2^-129.382, algorithmic cost ~ 8949, 2-norm = 4 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.48905930129094E-9) +pub const V1_0_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1101), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.5486665054375844e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(64), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(4), + log2_p_fail: -129.382, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2961), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.181082612949039f64), + ms_input_variance: Variance(4.15149575988355E-9f64), + }), + }; +// p-fail = 2^-128.131, algorithmic cost ~ 2077, 2-norm = 1 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(2.21764001577886E-8) +pub const V1_0_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1056), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.713536970443607e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -128.131, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1458), + ms_bound: NoiseEstimationMeasureBound(36028797018963968f64), + ms_r_sigma_factor: RSigmaFactor(13.115489806865527f64), + ms_input_variance: Variance(1.64849840897239E-9f64), + }), + }; +// p-fail = 2^-130.318, algorithmic cost ~ 8932, 2-norm = 2 +// Average number of encryptions of 0s ~ 33, peak noise ~ Variance(5.44858619003947E-9) +pub const V1_0_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1099), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.673257191405497e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(128), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(2), + log2_p_fail: -130.318, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2959), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.229947802091102f64), + ms_input_variance: Variance(4.11344796783681E-9f64), + }), + }; +// p-fail = 2^-129.114, algorithmic cost ~ 8924, 2-norm = 1 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.50077134664127E-9) +pub const V1_0_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1098), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.73718341270979e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(256), + carry_modulus: CarryModulus(1), + max_noise_level: MaxNoiseLevel::new(1), + log2_p_fail: -129.114, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2961), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.167042791174891f64), + ms_input_variance: Variance(4.16684578404098E-9f64), + }), + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/mod.rs new file mode 100644 index 000000000..4e3b5c531 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod pbs_ks; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/pbs_ks.rs b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/pbs_ks.rs new file mode 100644 index 000000000..578d5b38f --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_128/pbs_ks.rs @@ -0,0 +1,128 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, + LweCiphertextCount, LweDimension, MaxNoiseLevel, MessageModulus, + ModulusSwitchNoiseReductionParams, NoiseEstimationMeasureBound, PolynomialSize, RSigmaFactor, + StandardDev, Variance, +}; + +// p-fail = 2^-128.181, algorithmic cost ~ 70, 2-norm = 3 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.0000226994502138943) +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(914), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.938614855855138e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -128.181, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1450), + ms_bound: NoiseEstimationMeasureBound(1152921504606846976f64), + ms_r_sigma_factor: RSigmaFactor(13.118142614422709f64), + ms_input_variance: Variance(0.00000450016534247506f64), + }), + }; +// p-fail = 2^-128.163, algorithmic cost ~ 128, 2-norm = 5 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000141892645707080) +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(979), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.9121942871268e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.163, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1454), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.11716805632582f64), + ms_input_variance: Variance(2.00756529473751E-7f64), + }), + }; +// p-fail = 2^-128.674, algorithmic cost ~ 2030, 2-norm = 9 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(8.83211431719384E-8) +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1106), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.255365915886752e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -128.674, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2962), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.1440043411319f64), + ms_input_variance: Variance(6.68231137412311E-8f64), + }), + }; +// p-fail = 2^-129.799, algorithmic cost ~ 13785, 2-norm = 17 +// Average number of encryptions of 0s ~ 34, peak noise ~ Variance(5.47094548750703E-9) +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1267), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.0240196581361536e-09, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(9), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -129.799, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Small, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2977), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.20288527712688f64), + ms_input_variance: Variance(3.93208045210723E-9f64), + }), + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_40/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_40/ks_pbs.rs new file mode 100644 index 000000000..affabc639 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_40/ks_pbs.rs @@ -0,0 +1,102 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-40.004, algorithmic cost ~ 44, 2-norm = 3 +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(750), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.5140301927925663e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.004, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-40.489, algorithmic cost ~ 101, 2-norm = 5 +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(796), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.8462551852215656e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -40.489, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-40.298, algorithmic cost ~ 788, 2-norm = 9 +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(925), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.393437385253331e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -40.298, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-40.107, algorithmic cost ~ 4095, 2-norm = 17 +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1096), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.8683927681857106e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -40.107, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_40/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_40/mod.rs new file mode 100644 index 000000000..cf32dbe64 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_40/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs new file mode 100644 index 000000000..88d459267 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -0,0 +1,102 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-64.01, algorithmic cost ~ 60, 2-norm = 3 +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(781), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.868480365938865e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -64.01, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.014, algorithmic cost ~ 106, 2-norm = 5 +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(833), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.6158408373309336e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -64.014, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.177, algorithmic cost ~ 833, 2-norm = 9 +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(977), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.0144389706858286e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -64.177, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.014, algorithmic cost ~ 5893, 2-norm = 17 +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1110), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 3.038278019865525e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.014, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_64/mod.rs new file mode 100644 index 000000000..cf32dbe64 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/gaussian/p_fail_2_minus_64/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/mod.rs new file mode 100644 index 000000000..6a760df77 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/mod.rs @@ -0,0 +1,3 @@ +pub mod compact_pk; +pub mod gaussian; +pub mod tuniform; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/tuniform/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/mod.rs new file mode 100644 index 000000000..372442ce7 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/mod.rs @@ -0,0 +1,3 @@ +pub mod p_fail_2_minus_128; +pub mod p_fail_2_minus_40; +pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_128/ks_pbs.rs new file mode 100644 index 000000000..a938c7db4 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_128/ks_pbs.rs @@ -0,0 +1,112 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, + LweCiphertextCount, LweDimension, MaxNoiseLevel, MessageModulus, + ModulusSwitchNoiseReductionParams, NoiseEstimationMeasureBound, PolynomialSize, RSigmaFactor, + Variance, +}; + +// p-fail = 2^-144.044, algorithmic cost ~ 67, 2-norm = 3 +// Average number of encryptions of 0s ~ 15, peak noise ~ Variance(0.0000201396668936698) +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(879), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -144.044, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1437), + ms_bound: NoiseEstimationMeasureBound(1152921504606846976f64), + ms_r_sigma_factor: RSigmaFactor(13.926881354504543f64), + ms_input_variance: Variance(0.00000263576954463012f64), + }), + }; +// p-fail = 2^-129.153, algorithmic cost ~ 113, 2-norm = 5 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(0.00000140546154228955) +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(918), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(45), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -129.15284804376165, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1449), + ms_bound: NoiseEstimationMeasureBound(288230376151711744f64), + ms_r_sigma_factor: RSigmaFactor(13.179852282053789f64), + ms_input_variance: Variance(2.63039184094559E-7f64), + }), + }; +// p-fail = 2^-128.771, algorithmic cost ~ 900, 2-norm = 9 +// Average number of encryptions of 0s ~ 17, peak noise ~ Variance(8.82526029096167E-8) +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1077), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -128.771, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(1459), + ms_bound: NoiseEstimationMeasureBound(72057594037927936f64), + ms_r_sigma_factor: RSigmaFactor(13.149107412468162f64), + ms_input_variance: Variance(4.51118140877493E-9f64), + }), + }; +// p-fail = 2^-141.493, algorithmic cost ~ 11860, 2-norm = 17 +// Average number of encryptions of 0s ~ 31, peak noise ~ Variance(5.00776611824111E-9) +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1117), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -141.493, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: Some(ModulusSwitchNoiseReductionParams { + modulus_switch_zeros_count: LweCiphertextCount(2948), + ms_bound: NoiseEstimationMeasureBound(18014398509481984f64), + ms_r_sigma_factor: RSigmaFactor(13.799966261408738f64), + ms_input_variance: Variance(3.65080002319590E-9f64), + }), + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_128/mod.rs new file mode 100644 index 000000000..cf32dbe64 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_128/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_40/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_40/ks_pbs.rs new file mode 100644 index 000000000..578ddbe6f --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_40/ks_pbs.rs @@ -0,0 +1,86 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, +}; + +// p-fail = 2^-40.525, algorithmic cost ~ 49, 2-norm = 3 +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(799), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(48), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(30), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.525, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-57.015, algorithmic cost ~ 107, 2-norm = 5 +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(839), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(47), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -57.015, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-50.002, algorithmic cost ~ 816, 2-norm = 9 +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(958), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -50.002, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-41.009, algorithmic cost ~ 4165, 2-norm = 17 +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1077), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -41.009, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_40/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_40/mod.rs new file mode 100644 index 000000000..cf32dbe64 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_40/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs new file mode 100644 index 000000000..7464108bd --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_64/ks_pbs.rs @@ -0,0 +1,86 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, + DecompositionLevelCount, DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweDimension, + MaxNoiseLevel, MessageModulus, PolynomialSize, +}; + +// p-fail = 2^-72.226, algorithmic cost ~ 64, 2-norm = 3 +pub const V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(839), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(47), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -72.226, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-72.178, algorithmic cost ~ 112, 2-norm = 5 +pub const V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(879), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(23), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -72.178, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.454, algorithmic cost ~ 850, 2-norm = 9 +pub const V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(998), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(15), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -64.454, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; +// p-fail = 2^-64.037, algorithmic cost ~ 6737, 2-norm = 17 +pub const V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters = + ClassicPBSParameters { + lwe_dimension: LweDimension(1117), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(11), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(22), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.037, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + modulus_switch_noise_reduction_params: None, + }; diff --git a/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_64/mod.rs new file mode 100644 index 000000000..cf32dbe64 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/classic/tuniform/p_fail_2_minus_64/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs; diff --git a/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/mod.rs b/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/mod.rs new file mode 100644 index 000000000..7ea3431e1 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/mod.rs @@ -0,0 +1,3 @@ +pub mod p_fail_2_minus_128; + +pub use p_fail_2_minus_128::ks_pbs::*; diff --git a/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/p_fail_2_minus_128/ks_pbs.rs new file mode 100644 index 000000000..5c3c26966 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/p_fail_2_minus_128/ks_pbs.rs @@ -0,0 +1,56 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, CompactCiphertextListExpansionKind, + CompactPublicKeyEncryptionParameters, DynamicDistribution, LweDimension, MessageModulus, + SupportedCompactPkeZkScheme, +}; + +/// This parameter set should be used when doing zk proof of public key encryption +pub const V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + CompactPublicKeyEncryptionParameters = + V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2; + +/// This parameter set should be used when doing zk proof of public key encryption +pub const V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + CompactPublicKeyEncryptionParameters = + V1_0_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; + +pub const V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: + CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters { + encryption_lwe_dimension: LweDimension(2048), + encryption_noise_distribution: DynamicDistribution::new_t_uniform(17), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + ciphertext_modulus: CiphertextModulus::new_native(), + expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting, + zk_scheme: SupportedCompactPkeZkScheme::V2, +} +.validate(); + +/// This parameter set can be used with the v1 pke zk scheme on TFHE-rs v0.11 and after +/// Should be used with +/// V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1 +pub const V1_0_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters { + encryption_lwe_dimension: LweDimension(1024), + encryption_noise_distribution: DynamicDistribution::new_t_uniform(43), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + ciphertext_modulus: CiphertextModulus::new_native(), + expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting, + zk_scheme: SupportedCompactPkeZkScheme::V1, +} +.validate(); + +/// This parameter set can be used with the v1 pke zk scheme on TFHE-rs v0.11 and after +/// Should be used with V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1 +pub const V1_0_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + CompactPublicKeyEncryptionParameters = CompactPublicKeyEncryptionParameters { + encryption_lwe_dimension: LweDimension(2048), + encryption_noise_distribution: DynamicDistribution::new_t_uniform(17), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + ciphertext_modulus: CiphertextModulus::new_native(), + expansion_kind: CompactCiphertextListExpansionKind::RequiresCasting, + zk_scheme: SupportedCompactPkeZkScheme::V1, +} +.validate(); diff --git a/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/p_fail_2_minus_128/mod.rs new file mode 100644 index 000000000..cf32dbe64 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/compact_public_key_only/p_fail_2_minus_128/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs; diff --git a/tfhe/src/shortint/parameters/v1_0/key_switching/mod.rs b/tfhe/src/shortint/parameters/v1_0/key_switching/mod.rs new file mode 100644 index 000000000..7ea3431e1 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/key_switching/mod.rs @@ -0,0 +1,3 @@ +pub mod p_fail_2_minus_128; + +pub use p_fail_2_minus_128::ks_pbs::*; diff --git a/tfhe/src/shortint/parameters/v1_0/key_switching/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/key_switching/p_fail_2_minus_128/ks_pbs.rs new file mode 100644 index 000000000..756359e37 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/key_switching/p_fail_2_minus_128/ks_pbs.rs @@ -0,0 +1,67 @@ +use crate::shortint::parameters::{ + DecompositionBaseLog, DecompositionLevelCount, EncryptionKeyChoice, + ShortintKeySwitchingParameters, +}; + +pub const V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128: + ShortintKeySwitchingParameters = ShortintKeySwitchingParameters { + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + destination_key: EncryptionKeyChoice::Small, +}; + +// The level and base log correspond to the level and base log of the 2_2 TUniform parameters, so +// these parameters allow to keyswitch from one set of keys of the 2_2 TUniform parameters to +// another set of keys. The ciphertext will be under the small key and a PBS with the destination +// keys will be applied to finish the keyswitch. +pub const V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + ShortintKeySwitchingParameters = + V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + +// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters +// arriving under the small key, requires a PBS to get to the big key +pub const V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + ShortintKeySwitchingParameters = + V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2; + +pub const V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: + ShortintKeySwitchingParameters = ShortintKeySwitchingParameters { + ks_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(4), + destination_key: EncryptionKeyChoice::Small, +}; + +// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters +// arriving under the big key, requires a PBS to get to the big key +pub const V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + ShortintKeySwitchingParameters = + V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2; + +pub const V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2: + ShortintKeySwitchingParameters = ShortintKeySwitchingParameters { + ks_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(24), + destination_key: EncryptionKeyChoice::Big, +}; + +pub const V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + ShortintKeySwitchingParameters = + V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1; + +// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters +// arriving under the small key, requires a PBS to get to the big key +pub const V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + ShortintKeySwitchingParameters = ShortintKeySwitchingParameters { + ks_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(4), + destination_key: EncryptionKeyChoice::Small, +}; + +// Parameters to keyswitch from input PKE 2_2 TUniform parameters to 2_2 KS_PBS compute parameters +// arriving under the big key, requires a PBS to get to the big key +pub const V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1: + ShortintKeySwitchingParameters = ShortintKeySwitchingParameters { + ks_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(24), + destination_key: EncryptionKeyChoice::Big, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/key_switching/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_0/key_switching/p_fail_2_minus_128/mod.rs new file mode 100644 index 000000000..cf32dbe64 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/key_switching/p_fail_2_minus_128/mod.rs @@ -0,0 +1 @@ +pub mod ks_pbs; diff --git a/tfhe/src/shortint/parameters/v1_0/list_compression/mod.rs b/tfhe/src/shortint/parameters/v1_0/list_compression/mod.rs new file mode 100644 index 000000000..9e39f3094 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/list_compression/mod.rs @@ -0,0 +1,5 @@ +pub mod p_fail_2_minus_128; +pub mod p_fail_2_minus_64; + +pub use p_fail_2_minus_128::*; +pub use p_fail_2_minus_64::*; diff --git a/tfhe/src/shortint/parameters/v1_0/list_compression/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_0/list_compression/p_fail_2_minus_128/mod.rs new file mode 100644 index 000000000..03479bc79 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/list_compression/p_fail_2_minus_128/mod.rs @@ -0,0 +1,34 @@ +use crate::shortint::parameters::{ + CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-129.048, algorithmic cost ~ 97955 +pub const V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: CompressionParameters = + CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(3), + packing_ks_base_log: DecompositionBaseLog(4), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43), + }; + +// p-fail = 2^-127.994, algorithmic cost ~ 96700 +pub const V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: CompressionParameters = + CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev( + StandardDev(1.339775301998614e-07), + ), + }; diff --git a/tfhe/src/shortint/parameters/v1_0/list_compression/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v1_0/list_compression/p_fail_2_minus_64/mod.rs new file mode 100644 index 000000000..4d3390c4e --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/list_compression/p_fail_2_minus_64/mod.rs @@ -0,0 +1,34 @@ +use crate::shortint::parameters::{ + CiphertextModulusLog, CompressionParameters, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, GlweDimension, LweCiphertextCount, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-71.052, algorithmic cost ~ 97079 +pub const V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: CompressionParameters = + CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_t_uniform(43), + }; + +// p-fail = 2^-63.983, algorithmic cost ~ 110013 +pub const V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: CompressionParameters = + CompressionParameters { + br_level: DecompositionLevelCount(1), + br_base_log: DecompositionBaseLog(23), + packing_ks_level: DecompositionLevelCount(2), + packing_ks_base_log: DecompositionBaseLog(6), + packing_ks_polynomial_size: PolynomialSize(256), + packing_ks_glwe_dimension: GlweDimension(4), + lwe_per_glwe: LweCiphertextCount(256), + storage_log_modulus: CiphertextModulusLog(12), + packing_ks_key_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev( + StandardDev(1.339775301998614e-07), + ), + }; diff --git a/tfhe/src/shortint/parameters/v1_0/mod.rs b/tfhe/src/shortint/parameters/v1_0/mod.rs new file mode 100644 index 000000000..767cf79ac --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/mod.rs @@ -0,0 +1,1657 @@ +//! FHE Parameters as they were defined in TFHE-rs 1.0. +//! +//! These parameters may be used for backward compatibility. + +pub mod classic; +pub mod compact_public_key_only; +pub mod key_switching; +pub mod list_compression; +pub mod multi_bit; + +pub use classic::compact_pk::gaussian::p_fail_2_minus_128::ks_pbs::*; +pub use classic::compact_pk::gaussian::p_fail_2_minus_128::pbs_ks::*; +pub use classic::compact_pk::gaussian::p_fail_2_minus_64::ks_pbs::*; +pub use classic::compact_pk::gaussian::p_fail_2_minus_64::pbs_ks::*; +pub use classic::gaussian::p_fail_2_minus_128::ks_pbs::*; +pub use classic::gaussian::p_fail_2_minus_128::pbs_ks::*; +pub use classic::gaussian::p_fail_2_minus_40::ks_pbs::*; +pub use classic::gaussian::p_fail_2_minus_64::ks_pbs::*; +pub use classic::tuniform::p_fail_2_minus_128::ks_pbs::*; +pub use classic::tuniform::p_fail_2_minus_40::ks_pbs::*; +pub use classic::tuniform::p_fail_2_minus_64::ks_pbs::*; +pub use compact_public_key_only::p_fail_2_minus_128::ks_pbs::*; +pub use key_switching::p_fail_2_minus_128::ks_pbs::*; +pub use list_compression::p_fail_2_minus_128::*; +pub use list_compression::p_fail_2_minus_64::*; +pub use multi_bit::gaussian::p_fail_2_minus_128::ks_pbs::*; +pub use multi_bit::gaussian::p_fail_2_minus_128::ks_pbs_gpu::*; +pub use multi_bit::gaussian::p_fail_2_minus_40::ks_pbs::*; +pub use multi_bit::gaussian::p_fail_2_minus_40::ks_pbs_gpu::*; +pub use multi_bit::gaussian::p_fail_2_minus_64::ks_pbs::*; +pub use multi_bit::gaussian::p_fail_2_minus_64::ks_pbs_gpu::*; +pub use multi_bit::tuniform::p_fail_2_minus_128::ks_pbs::*; +pub use multi_bit::tuniform::p_fail_2_minus_128::ks_pbs_gpu::*; +pub use multi_bit::tuniform::p_fail_2_minus_40::ks_pbs::*; +pub use multi_bit::tuniform::p_fail_2_minus_40::ks_pbs_gpu::*; +pub use multi_bit::tuniform::p_fail_2_minus_64::ks_pbs::*; +pub use multi_bit::tuniform::p_fail_2_minus_64::ks_pbs_gpu::*; + +use crate::shortint::parameters::{ + ClassicPBSParameters, CompactPublicKeyEncryptionParameters, CompressionParameters, + MultiBitPBSParameters, ShortintKeySwitchingParameters, +}; + +/// All [`CompressionParameters`] in this module. +pub const VEC_ALL_COMPRESSION_PARAMETERS: [(&CompressionParameters, &str); 4] = [ + ( + &V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + "V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), +]; + +/// All [`ClassicPBSParameters`] in this module. +pub const VEC_ALL_CLASSIC_PBS_PARAMETERS: [(&ClassicPBSParameters, &str); 140] = [ + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_5_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_6_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_7_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_8_CARRY_0_COMPACT_PK_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40", + ), +]; + +/// All [`CompactPublicKeyEncryptionParameters`] in this module. +pub const VEC_ALL_COMPACT_PUBLIC_KEY_ENCRYPTION_PARAMETERS: [( + &CompactPublicKeyEncryptionParameters, + &str, +); 5] = [ + ( + &V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + "V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1", + ), + ( + &V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2, + "V1_0_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2", + ), + ( + &V1_0_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + "V1_0_PARAM_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1", + ), + ( + &V1_0_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + "V1_0_PARAM_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1", + ), +]; + +/// All [`ShortintKeySwitchingParameters`] in this module. +pub const VEC_ALL_SHORTINT_KEY_SWITCHING_PARAMETERS: [(&ShortintKeySwitchingParameters, &str); 9] = [ + ( + &V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2, + "V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2", + ), + ( + &V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2, + "V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV2", + ), + ( + &V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + "V1_0_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1", + ), + ( + &V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + "V1_0_PARAM_KEYSWITCH_PKE_TO_SMALL_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1", + ), + ( + &V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, + "V1_0_PARAM_KEYSWITCH_PKE_TO_BIG_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1", + ), +]; + +/// All [`MultiBitPBSParameters`] in this module. +pub const VEC_ALL_MULTI_BIT_PBS_PARAMETERS: [(&MultiBitPBSParameters, &str); 240] = [ + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40", + ), + ( + &V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40, + "V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40", + ), +]; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/mod.rs new file mode 100644 index 000000000..372442ce7 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/mod.rs @@ -0,0 +1,3 @@ +pub mod p_fail_2_minus_128; +pub mod p_fail_2_minus_40; +pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/ks_pbs.rs new file mode 100644 index 000000000..97f35eb97 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/ks_pbs.rs @@ -0,0 +1,307 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-130.447, algorithmic cost ~ 61, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(784), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.421122474670984e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -130.447, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-128.886, algorithmic cost ~ 181, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(920), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.059568198173411e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.886, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-129.336, algorithmic cost ~ 1373, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(986), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.5808859899421514e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -129.336, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-128.825, algorithmic cost ~ 11358, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1118), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.6465671112690942e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -128.825, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-128.679, algorithmic cost ~ 63, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(783), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.56767647590072e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -128.679, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-130.171, algorithmic cost ~ 168, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(906), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0261593945208966e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -130.171, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-131.302, algorithmic cost ~ 1326, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(987), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.5367387617400005e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -131.302, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-131.087, algorithmic cost ~ 11050, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1119), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.60129637762614e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -131.087, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-134.845, algorithmic cost ~ 77, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(740), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.7991413561317537e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -134.845, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-131.059, algorithmic cost ~ 193, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(904), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.0621869847945622e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -131.059, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-132.023, algorithmic cost ~ 1562, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(988), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.4933466919468334e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(13), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -132.023, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-130.009, algorithmic cost ~ 13250, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1120), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.5568000204635114e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -130.009, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/ks_pbs_gpu.rs new file mode 100644 index 000000000..fc9164d1c --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/ks_pbs_gpu.rs @@ -0,0 +1,307 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-130.719, algorithmic cost ~ 62, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(752), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4626768433082104e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -130.719, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-128.886, algorithmic cost ~ 181, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(920), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.059568198173411e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.886, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-129.336, algorithmic cost ~ 1373, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(986), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.5808859899421514e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -129.336, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-128.825, algorithmic cost ~ 11358, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1118), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.6465671112690942e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -128.825, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-128.679, algorithmic cost ~ 63, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(783), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 8.56767647590072e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -128.679, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-128.374, algorithmic cost ~ 170, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(879), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.6350380064649354e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.374, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-131.302, algorithmic cost ~ 1326, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(987), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.5367387617400005e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -131.302, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-131.087, algorithmic cost ~ 11050, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1119), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.60129637762614e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -131.087, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-130.73, algorithmic cost ~ 79, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(752), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.4626768433082104e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -130.73, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-128.676, algorithmic cost ~ 194, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(876), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.7218966356934023e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -128.676, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-132.023, algorithmic cost ~ 1562, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(988), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.4933466919468334e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(13), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -132.023, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-130.009, algorithmic cost ~ 13250, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1120), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.5568000204635114e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -130.009, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/mod.rs new file mode 100644 index 000000000..c5bc259b2 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_128/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/ks_pbs.rs new file mode 100644 index 000000000..c3380b25f --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/ks_pbs.rs @@ -0,0 +1,307 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-40.045, algorithmic cost ~ 45, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(764), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.189135884547694e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.045, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-40.661, algorithmic cost ~ 78, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(864), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.117990356129097e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -40.661, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-40.856, algorithmic cost ~ 622, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(926), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.266969277511613e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -40.856, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-40.033, algorithmic cost ~ 4151, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1092), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 4.1447931639158995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -40.033, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-40.66, algorithmic cost ~ 49, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(732), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.0654271768475778e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.66, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-40.753, algorithmic cost ~ 74, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(864), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.117990356129097e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -40.753, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-41.488, algorithmic cost ~ 608, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(927), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.142664464248818e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -41.488, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-40.219, algorithmic cost ~ 4032, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1092), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 4.1447931639158995e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -40.219, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-40.012, algorithmic cost ~ 64, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(740), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.7991413561317537e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(16), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.012, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-40.651, algorithmic cost ~ 87, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(864), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.117990356129097e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -40.651, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-42.098, algorithmic cost ~ 722, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(928), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.020485941329387e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -42.098, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-41.576, algorithmic cost ~ 4829, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1060), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.199150706330062e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -41.576, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/ks_pbs_gpu.rs new file mode 100644 index 000000000..a8e6dfb2d --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/ks_pbs_gpu.rs @@ -0,0 +1,307 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-40.152, algorithmic cost ~ 45, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(728), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.2130039414738607e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.152, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-41.199, algorithmic cost ~ 78, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(798), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.614041761170031e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -41.199, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-40.856, algorithmic cost ~ 622, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(926), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.266969277511613e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -40.856, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-40.71, algorithmic cost ~ 4161, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1058), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.451906811620241e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -40.71, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-40.66, algorithmic cost ~ 49, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(732), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.0654271768475778e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(17), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.66, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-41.287, algorithmic cost ~ 75, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(798), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.614041761170031e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -41.287, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-41.488, algorithmic cost ~ 608, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(927), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.142664464248818e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -41.488, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-41.381, algorithmic cost ~ 4049, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1059), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.324438557758654e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -41.381, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-40.012, algorithmic cost ~ 64, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(740), + glwe_dimension: GlweDimension(3), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.7991413561317537e-05, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 1.9524392655548086e-11, + )), + pbs_base_log: DecompositionBaseLog(16), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.012, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-42.563, algorithmic cost ~ 87, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(800), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 6.3897046246437025e-06, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.845267479601915e-15, + )), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -42.563, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-42.098, algorithmic cost ~ 722, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(928), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.020485941329387e-07, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -42.098, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-41.576, algorithmic cost ~ 4829, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1060), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 7.199150706330062e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -41.576, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/mod.rs new file mode 100644 index 000000000..c5bc259b2 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_40/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs similarity index 98% rename from tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs rename to tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs index fdd3ee8c8..78b296405 100644 --- a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs.rs @@ -1,7 +1,9 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; + // p-fail = 2^-65.905, algorithmic cost ~ 41, 2-norm = 1 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { @@ -27,7 +29,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-66.16, algorithmic cost ~ 59, 2-norm = 3 +// p-fail = 2^-66.162, algorithmic cost ~ 59, 2-norm = 3 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(748), @@ -46,7 +48,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -66.16, + log2_p_fail: -66.162, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), @@ -252,7 +254,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.006, algorithmic cost ~ 82, 2-norm = 5 +// p-fail = 2^-64.148, algorithmic cost ~ 82, 2-norm = 5 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(872), @@ -271,7 +273,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.006, + log2_p_fail: -64.148, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), @@ -452,7 +454,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.311, algorithmic cost ~ 657, 2-norm = 9 +// p-fail = 2^-64.212, algorithmic cost ~ 657, 2-norm = 9 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), @@ -471,7 +473,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.311, + log2_p_fail: -64.212, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), @@ -627,26 +629,26 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.034, algorithmic cost ~ 5491, 2-norm = 17 +// p-fail = 2^-64.021, algorithmic cost ~ 5810, 2-norm = 17 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1102), + lwe_dimension: LweDimension(1122), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.487964951537331e-08, + 2.470077677912143e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(11), - pbs_level: DecompositionLevelCount(3), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(23), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(17), - log2_p_fail: -64.034, + log2_p_fail: -64.021, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), @@ -1152,7 +1154,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.038, algorithmic cost ~ 78, 2-norm = 5 +// p-fail = 2^-64.095, algorithmic cost ~ 78, 2-norm = 5 pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(912), @@ -1171,7 +1173,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.038, + log2_p_fail: -64.095, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), @@ -1352,7 +1354,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.332, algorithmic cost ~ 641, 2-norm = 9 +// p-fail = 2^-64.232, algorithmic cost ~ 641, 2-norm = 9 pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), @@ -1371,7 +1373,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.332, + log2_p_fail: -64.232, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), @@ -1527,26 +1529,26 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.036, algorithmic cost ~ 5337, 2-norm = 17 +// p-fail = 2^-64.022, algorithmic cost ~ 5697, 2-norm = 17 pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1110), + lwe_dimension: LweDimension(1119), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.038278019865525e-08, + 2.60129637762614e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(10), - pbs_level: DecompositionLevelCount(3), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(22), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(17), - log2_p_fail: -64.036, + log2_p_fail: -64.022, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), @@ -2052,7 +2054,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.143, algorithmic cost ~ 91, 2-norm = 5 +// p-fail = 2^-64.122, algorithmic cost ~ 91, 2-norm = 5 pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(872), @@ -2071,7 +2073,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.143, + log2_p_fail: -64.122, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), @@ -2252,7 +2254,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.767, algorithmic cost ~ 763, 2-norm = 9 +// p-fail = 2^-64.633, algorithmic cost ~ 763, 2-norm = 9 pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(980), @@ -2271,7 +2273,7 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.767, + log2_p_fail: -64.633, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), @@ -2427,26 +2429,26 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64: grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.052, algorithmic cost ~ 6116, 2-norm = 17 +// p-fail = 2^-64.007, algorithmic cost ~ 6852, 2-norm = 17 pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(1104), + lwe_dimension: LweDimension(1124), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 3.369659065698222e-08, + 2.3862968108916744e-08, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.168404344971009e-19, )), - pbs_base_log: DecompositionBaseLog(10), - pbs_level: DecompositionLevelCount(3), - ks_base_log: DecompositionBaseLog(1), - ks_level: DecompositionLevelCount(22), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(17), - log2_p_fail: -64.052, + log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), diff --git a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs similarity index 66% rename from tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs rename to tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs index 87defd034..18938ea0f 100644 --- a/tfhe/src/shortint/parameters/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -1,8 +1,10 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; -// p-fail = 2^-64.39, algorithmic cost ~ 65, 2-norm = 3 +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, StandardDev, +}; + +// p-fail = 2^-64.391, algorithmic cost ~ 65, 2-norm = 3 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(782), @@ -21,13 +23,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M6 message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -64.39, + log2_p_fail: -64.391, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.205, algorithmic cost ~ 82, 2-norm = 5 +// p-fail = 2^-64.342, algorithmic cost ~ 82, 2-norm = 5 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(838), @@ -46,13 +48,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M6 message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.205, + log2_p_fail: -64.342, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.311, algorithmic cost ~ 657, 2-norm = 9 +// p-fail = 2^-64.212, algorithmic cost ~ 657, 2-norm = 9 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), @@ -71,13 +73,39 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M6 message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.311, + log2_p_fail: -64.212, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.363, algorithmic cost ~ 73, 2-norm = 3 +// p-fail = 2^-64.021, algorithmic cost ~ 5810, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1122), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.470077677912143e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.021, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-64.364, algorithmic cost ~ 73, 2-norm = 3 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(747), @@ -96,12 +124,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M6 message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -64.363, + log2_p_fail: -64.364, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; +// p-fail = 2^-64.17, algorithmic cost ~ 79, 2-norm = 5 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(837), @@ -120,13 +149,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M6 message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -64.117, + log2_p_fail: -64.17, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.332, algorithmic cost ~ 641, 2-norm = 9 +// p-fail = 2^-64.232, algorithmic cost ~ 641, 2-norm = 9 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(978), @@ -145,38 +174,63 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M6 message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.332, + log2_p_fail: -64.232, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.829, algorithmic cost ~ 96, 2-norm = 3 +// p-fail = 2^-64.022, algorithmic cost ~ 5697, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1119), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.60129637762614e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.022, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-65.19, algorithmic cost ~ 97, 2-norm = 3 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { - lwe_dimension: LweDimension(748), + lwe_dimension: LweDimension(784), glwe_dimension: GlweDimension(4), polynomial_size: PolynomialSize(512), lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( - 1.5671865150356198e-05, + 8.421122474670984e-06, )), glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( 2.845267479601915e-15, )), pbs_base_log: DecompositionBaseLog(22), pbs_level: DecompositionLevelCount(1), - ks_base_log: DecompositionBaseLog(3), - ks_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -64.829, + log2_p_fail: -65.19, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-65.113, algorithmic cost ~ 91, 2-norm = 5 +// p-fail = 2^-65.093, algorithmic cost ~ 91, 2-norm = 5 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(840), @@ -195,13 +249,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M6 message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -65.113, + log2_p_fail: -65.093, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.767, algorithmic cost ~ 763, 2-norm = 9 +// p-fail = 2^-64.633, algorithmic cost ~ 763, 2-norm = 9 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(980), @@ -220,15 +274,34 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M6 message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.767, + log2_p_fail: -64.633, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.007, algorithmic cost ~ 6852, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1124), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.3862968108916744e-08, + )), + glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev( + 2.168404344971009e-19, + )), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.007, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64: - MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64; -pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64: - MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; -pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64: - MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/mod.rs new file mode 100644 index 000000000..c5bc259b2 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/gaussian/p_fail_2_minus_64/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/mod.rs new file mode 100644 index 000000000..008172142 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/mod.rs @@ -0,0 +1,2 @@ +pub mod gaussian; +pub mod tuniform; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/mod.rs new file mode 100644 index 000000000..d46238d42 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/mod.rs @@ -0,0 +1,4 @@ +//! #Warning experimental +pub mod p_fail_2_minus_128; +pub mod p_fail_2_minus_40; +pub mod p_fail_2_minus_64; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/ks_pbs.rs new file mode 100644 index 000000000..a20a989ed --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/ks_pbs.rs @@ -0,0 +1,259 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, +}; + +// p-fail = 2^-140.433, algorithmic cost ~ 65, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(880), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(6), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -140.433, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-135.924, algorithmic cost ~ 188, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(958), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -135.924, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-145.056, algorithmic cost ~ 1412, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1038), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(42), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -145.056, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-153.575, algorithmic cost ~ 11764, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1158), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(39), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -153.575, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-140.531, algorithmic cost ~ 68, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(879), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(46), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(6), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -140.531, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-136.966, algorithmic cost ~ 177, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(999), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(5), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -136.966, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-145.383, algorithmic cost ~ 1361, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1038), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(42), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -145.383, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-154.953, algorithmic cost ~ 11436, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1158), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(39), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -154.953, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-138.256, algorithmic cost ~ 79, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(760), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(49), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -138.256, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-143.691, algorithmic cost ~ 204, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(920), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(45), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -143.691, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-143.991, algorithmic cost ~ 1610, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1040), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(42), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(13), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -143.991, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-151.375, algorithmic cost ~ 13723, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1160), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(39), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -151.375, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/ks_pbs_gpu.rs new file mode 100644 index 000000000..1f2c72de3 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/ks_pbs_gpu.rs @@ -0,0 +1,259 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, +}; + +// p-fail = 2^-174.18, algorithmic cost ~ 66, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(800), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(48), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -174.18, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-135.924, algorithmic cost ~ 188, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(958), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -135.924, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-145.056, algorithmic cost ~ 1412, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1038), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(42), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -145.056, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-155.014, algorithmic cost ~ 11945, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1118), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -155.014, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-174.121, algorithmic cost ~ 68, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(801), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(48), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -174.121, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-140.171, algorithmic cost ~ 178, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(918), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(45), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -140.171, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-145.383, algorithmic cost ~ 1361, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1038), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(42), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -145.383, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-154.953, algorithmic cost ~ 11436, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1158), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(39), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -154.953, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-174.195, algorithmic cost ~ 84, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(800), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(48), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -174.195, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-143.691, algorithmic cost ~ 204, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(920), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(4096), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(45), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(21), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -143.691, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-143.991, algorithmic cost ~ 1610, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1040), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(16384), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(42), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(13), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -143.991, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-152.843, algorithmic cost ~ 13838, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M128: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1120), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(65536), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(8), + pbs_level: DecompositionLevelCount(4), + ks_base_log: DecompositionBaseLog(2), + ks_level: DecompositionLevelCount(11), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -152.843, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/mod.rs new file mode 100644 index 000000000..c5bc259b2 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_128/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/ks_pbs.rs new file mode 100644 index 000000000..331e61acf --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/ks_pbs.rs @@ -0,0 +1,258 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, +}; +// p-fail = 2^-44.563, algorithmic cost ~ 59, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(720), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(50), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -44.563, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-42.127, algorithmic cost ~ 82, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(958), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(7), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -42.127, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-41.34, algorithmic cost ~ 638, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(998), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -41.34, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-42.501, algorithmic cost ~ 4240, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1078), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -42.501, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-44.565, algorithmic cost ~ 61, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(720), + glwe_dimension: GlweDimension(2), + polynomial_size: PolynomialSize(1024), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(50), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -44.565, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-42.184, algorithmic cost ~ 79, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(960), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(7), + ks_level: DecompositionLevelCount(2), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -42.184, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-41.326, algorithmic cost ~ 622, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(999), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -41.326, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-42.733, algorithmic cost ~ 4118, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1077), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -42.733, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-48.15, algorithmic cost ~ 75, 2-norm = 3 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(720), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(50), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -48.15, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-55.53, algorithmic cost ~ 91, 2-norm = 5 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(840), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(47), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -55.53, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-41.293, algorithmic cost ~ 746, 2-norm = 9 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1000), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(4), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -41.293, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-42.361, algorithmic cost ~ 4920, 2-norm = 17 +pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1080), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -42.361, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/ks_pbs_gpu.rs new file mode 100644 index 000000000..6764b4107 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/ks_pbs_gpu.rs @@ -0,0 +1,259 @@ +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, +}; + +// p-fail = 2^-40.071, algorithmic cost ~ 63, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(760), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(49), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.071, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-55.583, algorithmic cost ~ 83, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(840), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(47), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -55.583, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-49.89, algorithmic cost ~ 644, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(958), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -49.89, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; +// p-fail = 2^-42.501, algorithmic cost ~ 4240, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1078), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -42.501, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + +// p-fail = 2^-40.093, algorithmic cost ~ 71, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(759), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(49), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.093, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-55.744, algorithmic cost ~ 79, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(840), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(47), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -55.744, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-49.839, algorithmic cost ~ 629, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(960), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -49.839, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-42.733, algorithmic cost ~ 4118, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1077), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -42.733, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-40.072, algorithmic cost ~ 94, 2-norm = 3 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(760), + glwe_dimension: GlweDimension(4), + polynomial_size: PolynomialSize(512), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(49), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(4), + ks_level: DecompositionLevelCount(3), + message_modulus: MessageModulus(2), + carry_modulus: CarryModulus(2), + max_noise_level: MaxNoiseLevel::new(3), + log2_p_fail: -40.072, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-55.53, algorithmic cost ~ 91, 2-norm = 5 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(840), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(2048), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(47), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(17), + pbs_base_log: DecompositionBaseLog(22), + pbs_level: DecompositionLevelCount(1), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(5), + message_modulus: MessageModulus(4), + carry_modulus: CarryModulus(4), + max_noise_level: MaxNoiseLevel::new(5), + log2_p_fail: -55.53, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-49.82, algorithmic cost ~ 747, 2-norm = 9 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(960), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(8192), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(44), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(14), + pbs_level: DecompositionLevelCount(2), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(6), + message_modulus: MessageModulus(8), + carry_modulus: CarryModulus(8), + max_noise_level: MaxNoiseLevel::new(9), + log2_p_fail: -49.82, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-42.361, algorithmic cost ~ 4920, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M40: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1080), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(41), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(10), + pbs_level: DecompositionLevelCount(3), + ks_base_log: DecompositionBaseLog(3), + ks_level: DecompositionLevelCount(7), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -42.361, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/mod.rs new file mode 100644 index 000000000..c5bc259b2 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_40/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs similarity index 86% rename from tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs rename to tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs index 5ec5168d1..37dcbc2cf 100644 --- a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs.rs @@ -1,8 +1,10 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; -// p-fail = 2^-72.99, algorithmic cost ~ 62, 2-norm = 3 +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, +}; + +// p-fail = 2^-72.992, algorithmic cost ~ 62, 2-norm = 3 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(840), @@ -17,13 +19,13 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -72.99, + log2_p_fail: -72.992, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-67.384, algorithmic cost ~ 86, 2-norm = 5 +// p-fail = 2^-67.558, algorithmic cost ~ 86, 2-norm = 5 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(958), @@ -38,20 +40,20 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -67.384, + log2_p_fail: -67.558, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.356, algorithmic cost ~ 671, 2-norm = 9 +// p-fail = 2^-64.255, algorithmic cost ~ 671, 2-norm = 9 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(998), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), - glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(3), @@ -59,34 +61,34 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.356, + log2_p_fail: -64.255, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.169, algorithmic cost ~ 6670, 2-norm = 17 +// p-fail = 2^-64.165, algorithmic cost ~ 7769, 2-norm = 17 pub const V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1118), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), - glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), - pbs_base_log: DecompositionBaseLog(9), - pbs_level: DecompositionLevelCount(4), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(23), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(17), - log2_p_fail: -64.169, + log2_p_fail: -64.165, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-72.999, algorithmic cost ~ 65, 2-norm = 3 +// p-fail = 2^-73.0, algorithmic cost ~ 65, 2-norm = 3 pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(840), @@ -101,13 +103,13 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -72.999, + log2_p_fail: -73.0, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-67.645, algorithmic cost ~ 83, 2-norm = 5 +// p-fail = 2^-67.711, algorithmic cost ~ 83, 2-norm = 5 pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(960), @@ -122,20 +124,20 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -67.645, + log2_p_fail: -67.711, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.324, algorithmic cost ~ 655, 2-norm = 9 +// p-fail = 2^-64.222, algorithmic cost ~ 655, 2-norm = 9 pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(999), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), - glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(3), @@ -143,34 +145,34 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.324, + log2_p_fail: -64.222, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.135, algorithmic cost ~ 6578, 2-norm = 17 +// p-fail = 2^-64.119, algorithmic cost ~ 7702, 2-norm = 17 pub const V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1119), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), - glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), - pbs_base_log: DecompositionBaseLog(8), - pbs_level: DecompositionLevelCount(4), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(23), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(17), - log2_p_fail: -64.135, + log2_p_fail: -64.119, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-138.258, algorithmic cost ~ 79, 2-norm = 3 +// p-fail = 2^-138.256, algorithmic cost ~ 79, 2-norm = 3 pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(760), @@ -185,13 +187,13 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -138.258, + log2_p_fail: -138.256, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-69.688, algorithmic cost ~ 96, 2-norm = 5 +// p-fail = 2^-69.664, algorithmic cost ~ 96, 2-norm = 5 pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(880), @@ -206,20 +208,20 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -69.688, + log2_p_fail: -69.664, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.272, algorithmic cost ~ 778, 2-norm = 9 +// p-fail = 2^-64.137, algorithmic cost ~ 778, 2-norm = 9 pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1000), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(8192), lwe_noise_distribution: DynamicDistribution::new_t_uniform(43), - glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), pbs_base_log: DecompositionBaseLog(14), pbs_level: DecompositionLevelCount(2), ks_base_log: DecompositionBaseLog(3), @@ -227,28 +229,28 @@ pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.272, + log2_p_fail: -64.137, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.088, algorithmic cost ~ 7709, 2-norm = 17 +// p-fail = 2^-64.043, algorithmic cost ~ 9141, 2-norm = 17 pub const V1_0_PARAM_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1120), glwe_dimension: GlweDimension(1), polynomial_size: PolynomialSize(32768), lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), - glwe_noise_distribution: DynamicDistribution::new_t_uniform(4), - pbs_base_log: DecompositionBaseLog(8), - pbs_level: DecompositionLevelCount(4), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), ks_base_log: DecompositionBaseLog(1), ks_level: DecompositionLevelCount(23), message_modulus: MessageModulus(16), carry_modulus: CarryModulus(16), max_noise_level: MaxNoiseLevel::new(17), - log2_p_fail: -64.088, + log2_p_fail: -64.043, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), diff --git a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs similarity index 67% rename from tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs rename to tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs index 283f86da5..0c543cbef 100644 --- a/tfhe/src/shortint/parameters/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/ks_pbs_gpu.rs @@ -1,9 +1,10 @@ -use crate::core_crypto::prelude::*; -use crate::shortint::ciphertext::MaxNoiseLevel; -use crate::shortint::parameters::multi_bit::MultiBitPBSParameters; -use crate::shortint::parameters::{CarryModulus, MessageModulus}; +use crate::shortint::parameters::{ + CarryModulus, CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, + DynamicDistribution, EncryptionKeyChoice, GlweDimension, LweBskGroupingFactor, LweDimension, + MaxNoiseLevel, MessageModulus, MultiBitPBSParameters, PolynomialSize, +}; -// p-fail = 2^-73.238, algorithmic cost ~ 69, 2-norm = 3 +// p-fail = 2^-73.24, algorithmic cost ~ 69, 2-norm = 3 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(800), @@ -18,13 +19,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M6 message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -73.238, + log2_p_fail: -73.24, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-69.582, algorithmic cost ~ 87, 2-norm = 5 +// p-fail = 2^-69.752, algorithmic cost ~ 87, 2-norm = 5 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(880), @@ -39,13 +40,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M6 message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -69.582, + log2_p_fail: -69.752, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; -// p-fail = 2^-64.356, algorithmic cost ~ 671, 2-norm = 9 +// p-fail = 2^-64.255, algorithmic cost ~ 671, 2-norm = 9 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(998), @@ -60,12 +61,34 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M6 message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.356, + log2_p_fail: -64.255, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(2), deterministic_execution: false, }; +// p-fail = 2^-64.165, algorithmic cost ~ 7769, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_2_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1118), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(23), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.165, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(2), + deterministic_execution: false, +}; + // p-fail = 2^-73.179, algorithmic cost ~ 78, 2-norm = 3 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { @@ -87,7 +110,7 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M6 grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-70.024, algorithmic cost ~ 83, 2-norm = 5 +// p-fail = 2^-70.09, algorithmic cost ~ 83, 2-norm = 5 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(879), @@ -102,13 +125,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M6 message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -70.024, + log2_p_fail: -70.09, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-64.324, algorithmic cost ~ 655, 2-norm = 9 +// p-fail = 2^-64.222, algorithmic cost ~ 655, 2-norm = 9 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(999), @@ -123,13 +146,34 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M6 message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.324, + log2_p_fail: -64.222, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(3), deterministic_execution: false, }; -// p-fail = 2^-73.246, algorithmic cost ~ 103, 2-norm = 3 +// p-fail = 2^-64.119, algorithmic cost ~ 7702, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1119), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(23), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.119, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(3), + deterministic_execution: false, +}; +// p-fail = 2^-73.245, algorithmic cost ~ 103, 2-norm = 3 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(800), @@ -144,13 +188,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_1_CARRY_1_KS_PBS_TUNIFORM_2M6 message_modulus: MessageModulus(2), carry_modulus: CarryModulus(2), max_noise_level: MaxNoiseLevel::new(3), - log2_p_fail: -73.246, + log2_p_fail: -73.245, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-69.688, algorithmic cost ~ 96, 2-norm = 5 +// p-fail = 2^-69.664, algorithmic cost ~ 96, 2-norm = 5 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(880), @@ -165,13 +209,13 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M6 message_modulus: MessageModulus(4), carry_modulus: CarryModulus(4), max_noise_level: MaxNoiseLevel::new(5), - log2_p_fail: -69.688, + log2_p_fail: -69.664, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; -// p-fail = 2^-64.272, algorithmic cost ~ 778, 2-norm = 9 +// p-fail = 2^-64.137, algorithmic cost ~ 778, 2-norm = 9 pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64: MultiBitPBSParameters = MultiBitPBSParameters { lwe_dimension: LweDimension(1000), @@ -186,12 +230,30 @@ pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M6 message_modulus: MessageModulus(8), carry_modulus: CarryModulus(8), max_noise_level: MaxNoiseLevel::new(9), - log2_p_fail: -64.272, + log2_p_fail: -64.137, + ciphertext_modulus: CiphertextModulus::new_native(), + encryption_key_choice: EncryptionKeyChoice::Big, + grouping_factor: LweBskGroupingFactor(4), + deterministic_execution: false, +}; +// p-fail = 2^-64.043, algorithmic cost ~ 9141, 2-norm = 17 +pub const V1_0_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64: + MultiBitPBSParameters = MultiBitPBSParameters { + lwe_dimension: LweDimension(1120), + glwe_dimension: GlweDimension(1), + polynomial_size: PolynomialSize(32768), + lwe_noise_distribution: DynamicDistribution::new_t_uniform(40), + glwe_noise_distribution: DynamicDistribution::new_t_uniform(3), + pbs_base_log: DecompositionBaseLog(7), + pbs_level: DecompositionLevelCount(5), + ks_base_log: DecompositionBaseLog(1), + ks_level: DecompositionLevelCount(23), + message_modulus: MessageModulus(16), + carry_modulus: CarryModulus(16), + max_noise_level: MaxNoiseLevel::new(17), + log2_p_fail: -64.043, ciphertext_modulus: CiphertextModulus::new_native(), encryption_key_choice: EncryptionKeyChoice::Big, grouping_factor: LweBskGroupingFactor(4), deterministic_execution: false, }; - -pub const PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64: - MultiBitPBSParameters = V1_0_PARAM_GPU_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; diff --git a/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/mod.rs b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/mod.rs new file mode 100644 index 000000000..c5bc259b2 --- /dev/null +++ b/tfhe/src/shortint/parameters/v1_0/multi_bit/tuniform/p_fail_2_minus_64/mod.rs @@ -0,0 +1,2 @@ +pub mod ks_pbs; +pub mod ks_pbs_gpu; diff --git a/tfhe/src/shortint/prelude.rs b/tfhe/src/shortint/prelude.rs index a6c120c33..2595d01a4 100644 --- a/tfhe/src/shortint/prelude.rs +++ b/tfhe/src/shortint/prelude.rs @@ -7,7 +7,7 @@ pub use super::ciphertext::{Ciphertext, CompressedCiphertext, PBSOrder}; pub use super::client_key::ClientKey; pub use super::gen_keys; pub use super::key_switching_key::KeySwitchingKey; -pub use super::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS; +pub use super::parameters::v1_0::key_switching::p_fail_2_minus_128::ks_pbs::V1_0_PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS_GAUSSIAN_2M128; pub use super::parameters::{ CarryModulus, CiphertextModulus, ClassicPBSParameters, DecompositionBaseLog, DecompositionLevelCount, EncryptionKeyChoice, GlweDimension, LweDimension, MaxNoiseLevel, diff --git a/tfhe/src/shortint/server_key/add.rs b/tfhe/src/shortint/server_key/add.rs index 36c2882ee..1197a19bb 100644 --- a/tfhe/src/shortint/server_key/add.rs +++ b/tfhe/src/shortint/server_key/add.rs @@ -19,9 +19,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -38,19 +36,6 @@ impl ServerKey { /// // Decrypt: /// let two = cks.decrypt(&ct_res); /// assert_eq!(msg + msg, two); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an addition: - /// let ct_res = sks.add(&ct1, &ct2); - /// - /// // Decrypt: - /// let two = cks.decrypt(&ct_res); - /// assert_eq!(msg + msg, two); /// ``` pub fn add(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut ct_res = ct_left.clone(); @@ -74,9 +59,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -97,22 +80,6 @@ impl ServerKey { /// // 15 + 3 mod 4 -> 3 + 3 mod 4 -> 2 mod 4 /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!((msg2 + msg1) % modulus, two); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.unchecked_encrypt(msg1); - /// let ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically an addition: - /// sks.add_assign(&mut ct1, &ct2); - /// - /// // Decrypt: - /// let two = cks.decrypt(&ct1); - /// - /// // 15 + 3 mod 4 -> 3 + 3 mod 4 -> 2 mod 4 - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!((msg2 + msg1) % modulus, two); /// ``` pub fn add_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let tmp_rhs: Ciphertext; @@ -143,9 +110,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -161,21 +126,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(msg1 + msg2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Same thing using the small key for encryption - /// let msg1 = 1; - /// let msg2 = 2; - /// let ct1 = cks.encrypt(msg1); - /// let ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically an addition: - /// let ct_res = sks.unchecked_add(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(msg1 + msg2, res); /// ``` pub fn unchecked_add(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -194,9 +144,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -212,18 +160,6 @@ impl ServerKey { /// // Decrypt: /// let two = cks.decrypt(&ct_left); /// assert_eq!(msg + msg, two); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let mut ct_left = cks.encrypt(msg); - /// let ct_right = cks.encrypt(msg); - /// - /// // Compute homomorphically an addition: - /// sks.unchecked_add_assign(&mut ct_left, &ct_right); - /// - /// // Decrypt: - /// let two = cks.decrypt(&ct_left); - /// assert_eq!(msg + msg, two); /// ``` pub fn unchecked_add_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { unchecked_add_assign(ct_left, ct_right, self.max_noise_level); @@ -236,11 +172,9 @@ impl ServerKey { /// /// # Example /// - ///```rust + /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -254,16 +188,6 @@ impl ServerKey { /// // Check if we can perform an addition /// sks.is_add_possible(ct_left.noise_degree(), ct_right.noise_degree()) /// .unwrap(); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.encrypt(msg); - /// let ct_right = cks.encrypt(msg); - /// - /// // Check if we can perform an addition - /// sks.is_add_possible(ct_left.noise_degree(), ct_right.noise_degree()) - /// .unwrap(); /// ``` pub fn is_add_possible( &self, @@ -286,9 +210,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -304,18 +226,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_res); /// assert_eq!(clear_res, msg + msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an addition: - /// let ct_res = sks.checked_add(&ct1, &ct2).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_res); - /// assert_eq!(clear_res, msg + msg); /// ``` pub fn checked_add( &self, @@ -336,9 +246,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -354,18 +262,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_left); /// assert_eq!(clear_res, msg + msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_left = cks.encrypt(msg); - /// let ct_right = cks.encrypt(msg); - /// - /// // Compute homomorphically an addition: - /// sks.checked_add_assign(&mut ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_left); - /// assert_eq!(clear_res, msg + msg); /// ``` pub fn checked_add_assign( &self, @@ -385,9 +281,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -404,19 +298,6 @@ impl ServerKey { /// // Decrypt: /// let two = cks.decrypt(&ct_res); /// assert_eq!(msg + msg, two); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an addition: - /// let ct_res = sks.smart_add(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let two = cks.decrypt(&ct_res); - /// assert_eq!(msg + msg, two); /// ``` pub fn smart_add(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { let SmartCleaningOperation { @@ -450,9 +331,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -473,22 +352,6 @@ impl ServerKey { /// // 15 + 3 mod 4 -> 3 + 3 mod 4 -> 2 mod 4 /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!((msg2 + msg1) % modulus, two); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.unchecked_encrypt(msg1); - /// let mut ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically an addition: - /// sks.smart_add_assign(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let two = cks.decrypt(&ct1); - /// - /// // 15 + 3 mod 4 -> 3 + 3 mod 4 -> 2 mod 4 - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!((msg2 + msg1) % modulus, two); /// ``` pub fn smart_add_assign(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) { let SmartCleaningOperation { diff --git a/tfhe/src/shortint/server_key/bitwise_op.rs b/tfhe/src/shortint/server_key/bitwise_op.rs index 07aaa8b7c..445791161 100644 --- a/tfhe/src/shortint/server_key/bitwise_op.rs +++ b/tfhe/src/shortint/server_key/bitwise_op.rs @@ -18,9 +18,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -37,19 +35,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(msg, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an AND: - /// let ct_res = sks.bitand(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(msg, res); /// ``` pub fn bitand(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut ct_res = ct_left.clone(); @@ -73,9 +58,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -96,19 +79,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct1); /// /// assert_eq!((msg2 & msg1) % modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let mut ct1 = cks.unchecked_encrypt(msg1); - /// let ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically an AND: - /// sks.bitand_assign(&mut ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct1); - /// - /// assert_eq!((msg2 & msg1) % modulus, res); /// ``` pub fn bitand_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let tmp_rhs: Ciphertext; @@ -135,9 +105,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -151,16 +119,6 @@ impl ServerKey { /// /// let res = cks.decrypt(&ct_res); /// assert_eq!(clear_1 & clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// let ct_res = sks.unchecked_bitand(&ct_1, &ct_2); - /// - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(clear_1 & clear_2, res); /// ``` pub fn unchecked_bitand(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -176,9 +134,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -192,16 +148,6 @@ impl ServerKey { /// /// let res = cks.decrypt(&ct_left); /// assert_eq!(clear_1 & clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let mut ct_left = cks.encrypt(clear_1); - /// let ct_right = cks.encrypt(clear_2); - /// - /// sks.unchecked_bitand_assign(&mut ct_left, &ct_right); - /// - /// let res = cks.decrypt(&ct_left); - /// assert_eq!(clear_1 & clear_2, res); /// ``` pub fn unchecked_bitand_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let new_degree = ct_left.degree.after_bitand(ct_right.degree); @@ -218,9 +164,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -236,18 +180,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_res); /// assert_eq!(clear_res, msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an AND: - /// let ct_res = sks.checked_bitand(&ct1, &ct2).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_res); - /// assert_eq!(clear_res, msg); /// ``` pub fn checked_bitand( &self, @@ -272,9 +204,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -290,18 +220,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_left); /// assert_eq!(clear_res, msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_left = cks.encrypt(msg); - /// let ct_right = cks.encrypt(msg); - /// - /// // Compute homomorphically an AND: - /// sks.checked_bitand_assign(&mut ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_left); - /// assert_eq!(clear_res, msg); /// ``` pub fn checked_bitand_assign( &self, @@ -325,9 +243,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -344,19 +260,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(msg, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an AND: - /// let ct_res = sks.smart_bitand(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(msg, res); /// ``` pub fn smart_bitand(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { self.smart_evaluate_bivariate_function(ct_left, ct_right, |lhs, rhs| lhs & rhs) @@ -373,9 +276,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -396,19 +297,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct1); /// /// assert_eq!((msg2 & msg1) % modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let mut ct1 = cks.unchecked_encrypt(msg1); - /// let mut ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically an AND: - /// sks.smart_bitand_assign(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct1); - /// - /// assert_eq!((msg2 & msg1) % modulus, res); /// ``` pub fn smart_bitand_assign(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) { self.smart_evaluate_bivariate_function_assign(ct_left, ct_right, |lhs, rhs| lhs & rhs); @@ -428,9 +316,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -447,19 +333,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(0, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically a XOR: - /// let ct_res = sks.bitxor(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(0, res); /// ``` pub fn bitxor(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut ct_res = ct_left.clone(); @@ -483,9 +356,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -506,19 +377,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct1); /// /// assert_eq!((msg2 ^ msg1) % modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let mut ct1 = cks.unchecked_encrypt(msg1); - /// let ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically a XOR: - /// sks.bitxor_assign(&mut ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct1); - /// - /// assert_eq!((msg2 ^ msg1) % modulus, res); /// ``` pub fn bitxor_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let tmp_rhs: Ciphertext; @@ -545,9 +403,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -562,17 +418,6 @@ impl ServerKey { /// /// let res = cks.decrypt(&ct_res); /// assert_eq!(clear_1 ^ clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_left = cks.encrypt(clear_1); - /// let ct_right = cks.encrypt(clear_2); - /// - /// let ct_res = sks.unchecked_bitxor(&ct_left, &ct_right); - /// - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(clear_1 ^ clear_2, res); /// ``` pub fn unchecked_bitxor(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -588,9 +433,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -605,17 +448,6 @@ impl ServerKey { /// /// let res = cks.decrypt(&ct_left); /// assert_eq!(clear_1 ^ clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let mut ct_left = cks.encrypt(clear_1); - /// let ct_right = cks.encrypt(clear_2); - /// - /// sks.unchecked_bitxor_assign(&mut ct_left, &ct_right); - /// - /// let res = cks.decrypt(&ct_left); - /// assert_eq!(clear_1 ^ clear_2, res); /// ``` pub fn unchecked_bitxor_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let new_degree = ct_left.degree.after_bitxor(ct_right.degree); @@ -632,9 +464,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -650,17 +480,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_res); /// assert_eq!(clear_res, 0); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically a xor: - /// let ct_res = sks.checked_bitxor(&ct1, &ct2).unwrap(); - /// let clear_res = cks.decrypt(&ct_res); - /// assert_eq!(clear_res, 0); /// ``` pub fn checked_bitxor( &self, @@ -685,9 +504,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -703,18 +520,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_left); /// assert_eq!(clear_res, 0); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_left = cks.encrypt(msg); - /// let ct_right = cks.encrypt(msg); - /// - /// // Compute homomorphically a xor: - /// sks.checked_bitxor_assign(&mut ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_left); - /// assert_eq!(clear_res, 0); /// ``` pub fn checked_bitxor_assign( &self, @@ -738,9 +543,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -757,19 +560,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(0, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically a XOR: - /// let ct_res = sks.smart_bitxor(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(0, res); /// ``` pub fn smart_bitxor(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { self.smart_evaluate_bivariate_function(ct_left, ct_right, |lhs, rhs| lhs ^ rhs) @@ -786,9 +576,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -809,19 +597,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct1); /// /// assert_eq!((msg2 ^ msg1) % modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let mut ct1 = cks.unchecked_encrypt(msg1); - /// let mut ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically a XOR: - /// sks.smart_bitxor_assign(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct1); - /// - /// assert_eq!((msg2 ^ msg1) % modulus, res); /// ``` pub fn smart_bitxor_assign(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) { self.smart_evaluate_bivariate_function_assign(ct_left, ct_right, |lhs, rhs| lhs ^ rhs); @@ -841,9 +616,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -860,19 +633,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(msg, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.bitor(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(msg, res); /// ``` pub fn bitor(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut ct_res = ct_left.clone(); @@ -896,9 +656,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -919,19 +677,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct1); /// /// assert_eq!((msg2 | msg1) % modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let mut ct1 = cks.unchecked_encrypt(msg1); - /// let ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically an OR: - /// sks.bitor_assign(&mut ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct1); - /// - /// assert_eq!((msg2 | msg1) % modulus, res); /// ``` pub fn bitor_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let tmp_rhs: Ciphertext; @@ -958,9 +703,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -976,17 +719,6 @@ impl ServerKey { /// /// let res = cks.decrypt(&ct_res); /// assert_eq!(clear_left | clear_right, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_left = cks.encrypt(clear_left); - /// let ct_right = cks.encrypt(clear_right); - /// - /// let ct_res = sks.unchecked_bitor(&ct_left, &ct_right); - /// - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(clear_left | clear_right, res); /// ``` pub fn unchecked_bitor(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -1002,9 +734,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1020,17 +750,6 @@ impl ServerKey { /// /// let res = cks.decrypt(&ct_left); /// assert_eq!(clear_left | clear_right, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let mut ct_left = cks.encrypt(clear_left); - /// let ct_right = cks.encrypt(clear_right); - /// - /// sks.unchecked_bitor_assign(&mut ct_left, &ct_right); - /// - /// let res = cks.decrypt(&ct_left); - /// assert_eq!(clear_left | clear_right, res); /// ``` pub fn unchecked_bitor_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let resulting_degree = ct_left.degree.after_bitor(ct_right.degree); @@ -1047,9 +766,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1065,18 +782,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_res); /// assert_eq!(clear_res, msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically a or: - /// let ct_res = sks.checked_bitor(&ct1, &ct2).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_res); - /// assert_eq!(clear_res, msg); /// ``` pub fn checked_bitor( &self, @@ -1101,9 +806,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1119,18 +822,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_left); /// assert_eq!(clear_res, msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_left = cks.encrypt(msg); - /// let ct_right = cks.encrypt(msg); - /// - /// // Compute homomorphically an or: - /// sks.checked_bitor_assign(&mut ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_left); - /// assert_eq!(clear_res, msg); /// ``` pub fn checked_bitor_assign( &self, @@ -1154,9 +845,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1173,19 +862,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(msg, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.smart_bitor(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(msg, res); /// ``` pub fn smart_bitor(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { self.smart_evaluate_bivariate_function(ct_left, ct_right, |lhs, rhs| lhs | rhs) @@ -1202,9 +878,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1225,20 +899,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct1); /// /// assert_eq!((msg2 | msg1) % modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.unchecked_encrypt(msg1); - /// let mut ct2 = cks.encrypt(msg2); - /// - /// // Compute homomorphically an OR: - /// sks.smart_bitor_assign(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct1); - /// - /// assert_eq!((msg2 | msg1) % modulus, res); /// ``` pub fn smart_bitor_assign(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) { self.smart_evaluate_bivariate_function_assign(ct_left, ct_right, |lhs, rhs| lhs | rhs); diff --git a/tfhe/src/shortint/server_key/comp_op.rs b/tfhe/src/shortint/server_key/comp_op.rs index 0218b2856..fd869b2a6 100644 --- a/tfhe/src/shortint/server_key/comp_op.rs +++ b/tfhe/src/shortint/server_key/comp_op.rs @@ -23,9 +23,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -42,19 +40,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(0, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.greater(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(0, res); /// ``` pub fn greater(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let tmp_lhs: Ciphertext; @@ -83,9 +68,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -101,18 +84,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!((msg_1 > msg_2) as u64, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let ct_res = sks.unchecked_greater(&ct_left, &ct_right); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!((msg_1 > msg_2) as u64, res); /// ``` pub fn unchecked_greater(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -135,9 +106,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -152,17 +121,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&res); /// assert_eq!((msg_1 > msg_2) as u64, clear_res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let res = sks.checked_greater(&ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&res); - /// assert_eq!((msg_1 > msg_2) as u64, clear_res); /// ``` pub fn checked_greater( &self, @@ -185,9 +143,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -204,19 +160,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(0, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.smart_greater(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(0, res); /// ``` pub fn smart_greater(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { self.smart_evaluate_bivariate_function(ct_left, ct_right, |lhs, rhs| u64::from(lhs > rhs)) @@ -236,9 +179,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -255,19 +196,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(1, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.greater_or_equal(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(1, res); /// ``` pub fn greater_or_equal(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let tmp_lhs: Ciphertext; @@ -296,9 +224,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -314,18 +240,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!((msg_1 >= msg_2) as u64, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let ct_res = sks.unchecked_greater_or_equal(&ct_left, &ct_right); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!((msg_1 >= msg_2) as u64, res); /// ``` pub fn unchecked_greater_or_equal( &self, @@ -351,9 +265,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -370,19 +282,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(1, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.smart_greater_or_equal(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(1, res); /// ``` pub fn smart_greater_or_equal( &self, @@ -400,9 +299,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -417,17 +314,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&res); /// assert_eq!((msg_1 >= msg_2) as u64, clear_res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let res = sks.checked_greater_or_equal(&ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&res); - /// assert_eq!((msg_1 >= msg_2) as u64, clear_res); /// ``` pub fn checked_greater_or_equal( &self, @@ -456,9 +342,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -475,19 +359,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(0, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.less(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(0, res); /// ``` pub fn less(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let tmp_lhs: Ciphertext; @@ -516,9 +387,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -535,19 +404,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!((msg_1 < msg_2) as u64, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// // Do the comparison - /// let ct_res = sks.unchecked_less(&ct_left, &ct_right); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!((msg_1 < msg_2) as u64, res); /// ``` pub fn unchecked_less(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -570,9 +426,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -587,17 +441,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&res); /// assert_eq!((msg_1 < msg_2) as u64, clear_res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let res = sks.checked_less(&ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&res); - /// assert_eq!((msg_1 < msg_2) as u64, clear_res); /// ``` pub fn checked_less( &self, @@ -620,9 +463,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -639,19 +480,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(0, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.smart_less(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(0, res); /// ``` pub fn smart_less(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { self.smart_evaluate_bivariate_function(ct_left, ct_right, |lhs, rhs| u64::from(lhs < rhs)) @@ -671,9 +499,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -690,19 +516,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(1, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.less_or_equal(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(1, res); /// ``` pub fn less_or_equal(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let tmp_lhs: Ciphertext; @@ -731,9 +544,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -749,18 +560,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!((msg_1 <= msg_2) as u64, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let ct_res = sks.unchecked_less_or_equal(&ct_left, &ct_right); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!((msg_1 <= msg_2) as u64, res); /// ``` pub fn unchecked_less_or_equal( &self, @@ -787,9 +586,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -804,17 +601,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&res); /// assert_eq!((msg_1 <= msg_2) as u64, clear_res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let res = sks.checked_less_or_equal(&ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&res); - /// assert_eq!((msg_1 <= msg_2) as u64, clear_res); /// ``` pub fn checked_less_or_equal( &self, @@ -837,9 +623,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -856,19 +640,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(1, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.smart_less_or_equal(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(1, res); /// ``` pub fn smart_less_or_equal( &self, @@ -892,9 +663,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -911,19 +680,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(1, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.equal(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(1, res); /// ``` pub fn equal(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let tmp_lhs: Ciphertext; @@ -952,9 +708,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -970,18 +724,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(res, 1); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let ct_res = sks.unchecked_equal(&ct_left, &ct_right); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(res, 1); /// ``` pub fn unchecked_equal(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -1004,9 +746,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1021,17 +761,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&res); /// assert_eq!((msg_1 == msg_2) as u64, clear_res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let res = sks.checked_equal(&ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&res); - /// assert_eq!((msg_1 == msg_2) as u64, clear_res); /// ``` pub fn checked_equal( &self, @@ -1054,9 +783,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1073,19 +800,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(1, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.smart_equal(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(1, res); /// ``` pub fn smart_equal(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { self.smart_evaluate_bivariate_function(ct_left, ct_right, |lhs, rhs| u64::from(lhs == rhs)) @@ -1105,9 +819,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1124,19 +836,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(0, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct1 = cks.encrypt(msg); - /// let ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.not_equal(&ct1, &ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(0, res); /// ``` pub fn not_equal(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let tmp_lhs: Ciphertext; @@ -1165,9 +864,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1183,18 +880,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(res, 1); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let ct_res = sks.unchecked_not_equal(&ct_left, &ct_right); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(res, 1); /// ``` pub fn unchecked_not_equal(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -1217,9 +902,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1234,17 +917,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&res); /// assert_eq!((msg_1 != msg_2) as u64, clear_res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.encrypt(msg_1); - /// let ct_right = cks.encrypt(msg_2); - /// - /// let res = sks.checked_not_equal(&ct_left, &ct_right).unwrap(); - /// - /// let clear_res = cks.decrypt(&res); - /// assert_eq!((msg_1 != msg_2) as u64, clear_res); /// ``` pub fn checked_not_equal( &self, @@ -1267,9 +939,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1286,19 +956,6 @@ impl ServerKey { /// // Decrypt: /// let res = cks.decrypt(&ct_res); /// assert_eq!(0, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct1 = cks.encrypt(msg); - /// let mut ct2 = cks.encrypt(msg); - /// - /// // Compute homomorphically an OR: - /// let ct_res = sks.smart_not_equal(&mut ct1, &mut ct2); - /// - /// // Decrypt: - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(0, res); /// ``` pub fn smart_not_equal( &self, @@ -1314,9 +971,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1331,17 +986,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(res, (msg_1 == scalar as u64) as u64); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt our message - /// let mut ct_left = cks.encrypt(msg_1); - /// - /// let ct_res = sks.smart_scalar_equal(&mut ct_left, scalar); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(res, (msg_1 == scalar as u64) as u64); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_equal(&self, ct_left: &mut Ciphertext, scalar: u8) -> Ciphertext { @@ -1369,9 +1013,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1386,17 +1028,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(res, (msg_1 != scalar as u64) as u64); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt our message - /// let mut ct_left = cks.encrypt(msg_1); - /// - /// let ct_res = sks.smart_scalar_not_equal(&mut ct_left, scalar); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(res, (msg_1 != scalar as u64) as u64); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_not_equal(&self, ct_left: &mut Ciphertext, scalar: u8) -> Ciphertext { @@ -1425,9 +1056,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1442,17 +1071,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(res, (msg_1 >= scalar as u64) as u64); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt our message - /// let mut ct_left = cks.encrypt(msg_1); - /// - /// let ct_res = sks.smart_scalar_greater_or_equal(&mut ct_left, scalar); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(res, (msg_1 >= scalar as u64) as u64); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_greater_or_equal( @@ -1484,9 +1102,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1501,17 +1117,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(res, (msg_1 <= scalar as u64) as u64); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt our message - /// let mut ct_left = cks.encrypt(msg_1); - /// - /// let ct_res = sks.smart_scalar_less_or_equal(&mut ct_left, scalar); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(res, (msg_1 <= scalar as u64) as u64); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_less_or_equal(&self, ct_left: &mut Ciphertext, scalar: u8) -> Ciphertext { @@ -1538,9 +1143,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1555,17 +1158,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(res, (msg_1 > scalar as u64) as u64); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt our message - /// let mut ct_left = cks.encrypt(msg_1); - /// - /// let ct_res = sks.smart_scalar_greater(&mut ct_left, scalar); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(res, (msg_1 > scalar as u64) as u64); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_greater(&self, ct_left: &mut Ciphertext, scalar: u8) -> Ciphertext { @@ -1591,9 +1183,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// @@ -1608,17 +1198,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(res, (msg_1 < scalar as u64) as u64); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt our message - /// let mut ct_left = cks.encrypt(msg_1); - /// - /// let ct_res = sks.smart_scalar_less(&mut ct_left, scalar); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(res, (msg_1 < scalar as u64) as u64); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_less(&self, ct_left: &mut Ciphertext, scalar: u8) -> Ciphertext { diff --git a/tfhe/src/shortint/server_key/div_mod.rs b/tfhe/src/shortint/server_key/div_mod.rs index 13a8f780c..479f0c002 100644 --- a/tfhe/src/shortint/server_key/div_mod.rs +++ b/tfhe/src/shortint/server_key/div_mod.rs @@ -22,9 +22,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -42,19 +40,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(clear_1 / clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// let ct_res = sks.div(&ct_1, &ct_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(clear_1 / clear_2, res); /// ``` pub fn div(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut ct_res = ct_left.clone(); @@ -83,9 +68,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -103,19 +86,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_1); /// assert_eq!(clear_1 / clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let mut ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// sks.div_assign(&mut ct_1, &ct_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_1); - /// assert_eq!(clear_1 / clear_2, res); /// ``` pub fn div_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let tmp_rhs: Ciphertext; @@ -147,9 +117,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -167,19 +135,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(clear_1 / clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// let ct_res = sks.unchecked_div(&ct_1, &ct_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(clear_1 / clear_2, res); /// ``` pub fn unchecked_div(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -200,9 +155,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -220,19 +173,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_1); /// assert_eq!(clear_1 / clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let mut ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// sks.unchecked_div_assign(&mut ct_1, &ct_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_1); - /// assert_eq!(clear_1 / clear_2, res); /// ``` pub fn unchecked_div_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let value_on_div_by_zero = ct_left.message_modulus.0 - 1; @@ -254,9 +194,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -274,19 +212,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(clear_1 / clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let mut ct_1 = cks.encrypt(clear_1); - /// let mut ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// let ct_res = sks.smart_div(&mut ct_1, &mut ct_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(clear_1 / clear_2, res); /// ``` pub fn smart_div(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { let value_on_div_by_zero = ct_left.message_modulus.0 - 1; @@ -308,9 +233,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -328,19 +251,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_1); /// assert_eq!(clear_1 / clear_2, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let mut ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// sks.unchecked_div_assign(&mut ct_1, &ct_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_1); - /// assert_eq!(clear_1 / clear_2, res); /// ``` pub fn smart_div_assign(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) { let value_on_div_by_zero = ct_left.message_modulus.0 - 1; diff --git a/tfhe/src/shortint/server_key/mod.rs b/tfhe/src/shortint/server_key/mod.rs index 29bf9f55f..c154ba7ee 100644 --- a/tfhe/src/shortint/server_key/mod.rs +++ b/tfhe/src/shortint/server_key/mod.rs @@ -728,57 +728,29 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// - /// { - /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); + /// // Generate the client key and the server key: + /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// - /// let msg = 3; + /// let msg = 3; /// - /// let ct = cks.encrypt(msg); + /// let ct = cks.encrypt(msg); /// - /// // Generate the lookup table for the functions - /// // f1: x -> x*x mod 4 - /// // f2: x -> count_ones(x as binary) mod 4 - /// let f1 = |x: u64| x.pow(2) % 4; - /// let f2 = |x: u64| x.count_ones() as u64 % 4; - /// // Easy to use for generation - /// let luts = sks.generate_many_lookup_table(&[&f1, &f2]); - /// let vec_res = sks.apply_many_lookup_table(&ct, &luts); + /// // Generate the lookup table for the functions + /// // f1: x -> x*x mod 4 + /// // f2: x -> count_ones(x as binary) mod 4 + /// let f1 = |x: u64| x.pow(2) % 4; + /// let f2 = |x: u64| x.count_ones() as u64 % 4; + /// // Easy to use for generation + /// let luts = sks.generate_many_lookup_table(&[&f1, &f2]); + /// let vec_res = sks.apply_many_lookup_table(&ct, &luts); /// - /// // Need to manually help Rust to iterate over them easily - /// let functions: &[&dyn Fn(u64) -> u64] = &[&f1, &f2]; - /// for (res, function) in vec_res.iter().zip(functions) { - /// let dec = cks.decrypt(res); - /// assert_eq!(dec, function(msg)); - /// } - /// } - /// { - /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let msg = 3; - /// - /// let ct = cks.encrypt(msg); - /// - /// // Generate the lookup table for the functions - /// // f1: x -> x*x mod 4 - /// // f2: x -> count_ones(x as binary) mod 4 - /// let f1 = |x: u64| x.pow(2) % 4; - /// let f2 = |x: u64| x.count_ones() as u64 % 4; - /// // Easy to use for generation - /// let luts = sks.generate_many_lookup_table(&[&f1, &f2]); - /// let vec_res = sks.apply_many_lookup_table(&ct, &luts); - /// - /// // Need to manually help Rust to iterate over them easily - /// let functions: &[&dyn Fn(u64) -> u64] = &[&f1, &f2]; - /// for (res, function) in vec_res.iter().zip(functions) { - /// let dec = cks.decrypt(res); - /// assert_eq!(dec, function(msg)); - /// } + /// // Need to manually help Rust to iterate over them easily + /// let functions: &[&dyn Fn(u64) -> u64] = &[&f1, &f2]; + /// for (res, function) in vec_res.iter().zip(functions) { + /// let dec = cks.decrypt(res); + /// assert_eq!(dec, function(msg)); /// } /// ``` pub fn generate_many_lookup_table( @@ -896,57 +868,29 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// - /// { - /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); + /// // Generate the client key and the server key: + /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// - /// let msg = 3; + /// let msg = 3; /// - /// let ct = cks.encrypt(msg); + /// let ct = cks.encrypt(msg); /// - /// // Generate the lookup table for the functions - /// // f1: x -> x*x mod 4 - /// // f2: x -> count_ones(x as binary) mod 4 - /// let f1 = |x: u64| x.pow(2) % 4; - /// let f2 = |x: u64| x.count_ones() as u64 % 4; - /// // Easy to use for generation - /// let luts = sks.generate_many_lookup_table(&[&f1, &f2]); - /// let vec_res = sks.apply_many_lookup_table(&ct, &luts); + /// // Generate the lookup table for the functions + /// // f1: x -> x*x mod 4 + /// // f2: x -> count_ones(x as binary) mod 4 + /// let f1 = |x: u64| x.pow(2) % 4; + /// let f2 = |x: u64| x.count_ones() as u64 % 4; + /// // Easy to use for generation + /// let luts = sks.generate_many_lookup_table(&[&f1, &f2]); + /// let vec_res = sks.apply_many_lookup_table(&ct, &luts); /// - /// // Need to manually help Rust to iterate over them easily - /// let functions: &[&dyn Fn(u64) -> u64] = &[&f1, &f2]; - /// for (res, function) in vec_res.iter().zip(functions) { - /// let dec = cks.decrypt(res); - /// assert_eq!(dec, function(msg)); - /// } - /// } - /// { - /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let msg = 3; - /// - /// let ct = cks.encrypt(msg); - /// - /// // Generate the lookup table for the functions - /// // f1: x -> x*x mod 4 - /// // f2: x -> count_ones(x as binary) mod 4 - /// let f1 = |x: u64| x.pow(2) % 4; - /// let f2 = |x: u64| x.count_ones() as u64 % 4; - /// // Easy to use for generation - /// let luts = sks.generate_many_lookup_table(&[&f1, &f2]); - /// let vec_res = sks.apply_many_lookup_table(&ct, &luts); - /// - /// // Need to manually help Rust to iterate over them easily - /// let functions: &[&dyn Fn(u64) -> u64] = &[&f1, &f2]; - /// for (res, function) in vec_res.iter().zip(functions) { - /// let dec = cks.decrypt(res); - /// assert_eq!(dec, function(msg)); - /// } + /// // Need to manually help Rust to iterate over them easily + /// let functions: &[&dyn Fn(u64) -> u64] = &[&f1, &f2]; + /// for (res, function) in vec_res.iter().zip(functions) { + /// let dec = cks.decrypt(res); + /// assert_eq!(dec, function(msg)); /// } /// ``` pub fn apply_many_lookup_table( diff --git a/tfhe/src/shortint/server_key/mul.rs b/tfhe/src/shortint/server_key/mul.rs index 606d6ebac..9fcd78314 100644 --- a/tfhe/src/shortint/server_key/mul.rs +++ b/tfhe/src/shortint/server_key/mul.rs @@ -16,9 +16,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -43,26 +41,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!((clear_1 * clear_2) % modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// let ct_res = sks.unchecked_mul_lsb(&ct_1, &ct_2); - /// // 2*3 == 6 == 01_10 (base 2) - /// // Only the message part is returned (lsb) so `ct_res` is: - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!((clear_1 * clear_2) % modulus, res); /// ``` pub fn unchecked_mul_lsb(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -81,9 +59,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -102,20 +78,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_1); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!((clear_1 * clear_2) % modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let mut ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// sks.unchecked_mul_lsb_assign(&mut ct_1, &ct_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_1); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!((clear_1 * clear_2) % modulus, res); /// ``` pub fn unchecked_mul_lsb_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { if ct_left.degree.get() == 0 || ct_right.degree.get() == 0 { @@ -142,9 +104,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -170,27 +130,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!((clear_1 * clear_2) / modulus, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// let ct_res = sks.unchecked_mul_msb(&ct_1, &ct_2); - /// // 2*3 == 6 == 01_10 (base 2) - /// // however the ciphertext will contain only the carry buffer - /// // as the message, the ct_res is actually: - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 1 | - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!((clear_1 * clear_2) / modulus, res); /// ``` pub fn unchecked_mul_msb(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut result = ct_left.clone(); @@ -255,9 +194,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -271,16 +208,6 @@ impl ServerKey { /// // Check if we can perform a multiplication /// sks.is_mul_possible(ct_1.noise_degree(), ct_2.noise_degree()) /// .unwrap(); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_1 = cks.encrypt(msg); - /// let ct_2 = cks.encrypt(msg); - /// - /// // Check if we can perform a multiplication - /// sks.is_mul_possible(ct_1.noise_degree(), ct_2.noise_degree()) - /// .unwrap(); /// ``` pub fn is_mul_possible( &self, @@ -302,9 +229,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -319,19 +244,6 @@ impl ServerKey { /// let clear_res = cks.decrypt_message_and_carry(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res % modulus, 2); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_1 = cks.encrypt(2); - /// let ct_2 = cks.encrypt(1); - /// - /// // Compute homomorphically a multiplication: - /// let ct_res = sks.checked_mul_lsb(&ct_1, &ct_2).unwrap(); - /// - /// let clear_res = cks.decrypt_message_and_carry(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res % modulus, 2); /// ``` pub fn checked_mul_lsb( &self, @@ -356,9 +268,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -373,19 +283,6 @@ impl ServerKey { /// let clear_res = cks.decrypt_message_and_carry(&ct_1); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res % modulus, 2); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_1 = cks.encrypt(2); - /// let ct_2 = cks.encrypt(1); - /// - /// // Compute homomorphically a multiplication: - /// sks.checked_mul_lsb_assign(&mut ct_1, &ct_2).unwrap(); - /// - /// let clear_res = cks.decrypt_message_and_carry(&ct_1); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res % modulus, 2); /// ``` pub fn checked_mul_lsb_assign( &self, @@ -409,9 +306,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -439,29 +334,6 @@ impl ServerKey { /// clear_res, /// (msg_1 * msg_2) / cks.parameters.message_modulus().0 /// ); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_1 = cks.encrypt(msg_1); - /// let ct_2 = cks.encrypt(msg_2); - /// - /// // Compute homomorphically a multiplication: - /// let ct_res = sks.checked_mul_msb(&ct_1, &ct_2).unwrap(); - /// - /// // 2*2 == 4 == 01_00 (base 2) - /// // however the ciphertext will contain only the carry buffer - /// // as the message, the ct_res is actually: - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 1 | - /// - /// let clear_res = cks.decrypt(&ct_res); - /// assert_eq!( - /// clear_res, - /// (msg_1 * msg_2) / cks.parameters.message_modulus().0 - /// ); /// ``` pub fn checked_mul_msb( &self, @@ -486,9 +358,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -506,19 +376,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!((clear_2 * clear_1), res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let ct_1 = cks.encrypt(clear_1); - /// let ct_2 = cks.encrypt(clear_2); - /// - /// // Compute homomorphically a multiplication - /// let ct_res = sks.unchecked_mul_lsb_small_carry(&ct_1, &ct_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!((clear_2 * clear_1), res); /// ``` pub fn unchecked_mul_lsb_small_carry( &self, @@ -543,10 +400,10 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::v1_0::V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64); + /// let (cks, sks) = gen_keys(V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128); /// /// let msg = 2; /// @@ -606,9 +463,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -626,19 +481,6 @@ impl ServerKey { /// let clear_res = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res % modulus, (msg_1 * msg_2) % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_1 = cks.encrypt(msg_1); - /// let ct_2 = cks.encrypt(msg_2); - /// - /// // Compute homomorphically a multiplication - /// let ct_res = sks.checked_mul_lsb_with_small_carry(&ct_1, &ct_2).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res % modulus, (msg_1 * msg_2) % modulus); /// ``` pub fn checked_mul_lsb_with_small_carry( &self, @@ -668,9 +510,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -700,31 +540,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_res); /// let modulus = sks.message_modulus.0; /// assert_eq!(res, (msg1 * msg2) % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.unchecked_encrypt(msg1); - /// // | ct_left | - /// // | carry | message | - /// // |-------|---------| - /// // | 1 1 | 0 0 | - /// let ct_right = cks.unchecked_encrypt(msg2); - /// // | ct_right | - /// // | carry | message | - /// // |-------|---------| - /// // | 1 1 | 0 1 | - /// - /// // Compute homomorphically a multiplication: - /// let ct_res = sks.mul_lsb(&ct_left, &ct_right); - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 0 | - /// - /// let res = cks.decrypt(&ct_res); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res, (msg1 * msg2) % modulus); /// ``` pub fn mul_lsb(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut ct_res = ct_left.clone(); @@ -749,9 +564,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -781,31 +594,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_res); /// let modulus = sks.message_modulus.0; /// assert_eq!(res, (msg1 * msg2) % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_left = cks.unchecked_encrypt(msg1); - /// // | ct_left | - /// // | carry | message | - /// // |-------|---------| - /// // | 1 1 | 0 0 | - /// let ct_right = cks.unchecked_encrypt(msg2); - /// // | ct_right | - /// // | carry | message | - /// // |-------|---------| - /// // | 1 1 | 0 1 | - /// - /// // Compute homomorphically a multiplication: - /// let ct_res = sks.mul(&ct_left, &ct_right); - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 0 | - /// - /// let res = cks.decrypt(&ct_res); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res, (msg1 * msg2) % modulus); /// ``` pub fn mul(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { self.mul_lsb(ct_left, ct_right) @@ -830,13 +618,10 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - /// V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64); + /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let msg1 = 5; /// let msg2 = 3; @@ -851,20 +636,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_1); /// let modulus = sks.message_modulus.0; /// assert_eq!(res % modulus, (msg1 * msg2) % modulus); - /// - /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_1 = cks.unchecked_encrypt(msg1); - /// let ct_2 = cks.unchecked_encrypt(msg2); - /// - /// // Compute homomorphically a multiplication - /// sks.mul_lsb_assign(&mut ct_1, &ct_2); - /// - /// let res = cks.decrypt(&ct_1); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res % modulus, (msg1 * msg2) % modulus); /// ``` pub fn mul_lsb_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let tmp_rhs: Ciphertext; @@ -908,13 +679,10 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - /// V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64); + /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let msg1 = 5; /// let msg2 = 3; @@ -929,20 +697,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_1); /// let modulus = sks.message_modulus.0; /// assert_eq!(res % modulus, (msg1 * msg2) % modulus); - /// - /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_1 = cks.unchecked_encrypt(msg1); - /// let ct_2 = cks.unchecked_encrypt(msg2); - /// - /// // Compute homomorphically a multiplication - /// sks.mul_assign(&mut ct_1, &ct_2); - /// - /// let res = cks.decrypt(&ct_1); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res % modulus, (msg1 * msg2) % modulus); /// ``` pub fn mul_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { self.mul_lsb_assign(ct_left, ct_right); @@ -967,9 +721,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -987,19 +739,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_1); /// let modulus = sks.message_modulus.0; /// assert_eq!(res, ((msg1 * msg2) / modulus) % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_1 = cks.unchecked_encrypt(msg1); - /// let ct_2 = cks.unchecked_encrypt(msg2); - /// - /// // Compute homomorphically a multiplication: - /// sks.mul_msb_assign(&mut ct_1, &ct_2); - /// - /// let res = cks.decrypt(&ct_1); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res, ((msg1 * msg2) / modulus) % modulus); /// ``` pub fn mul_msb_assign(&self, ct_left: &mut Ciphertext, ct_right: &Ciphertext) { let tmp_rhs: Ciphertext; @@ -1035,9 +774,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1055,19 +792,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_res); /// let modulus = sks.message_modulus.0; /// assert_eq!(res, ((msg1 * msg2) / modulus) % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let ct_1 = cks.unchecked_encrypt(msg1); - /// let ct_2 = cks.unchecked_encrypt(msg2); - /// - /// // Compute homomorphically a multiplication: - /// let ct_res = sks.mul_msb(&ct_1, &ct_2); - /// - /// let res = cks.decrypt(&ct_res); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res, ((msg1 * msg2) / modulus) % modulus); /// ``` pub fn mul_msb(&self, ct_left: &Ciphertext, ct_right: &Ciphertext) -> Ciphertext { let mut ct_res = ct_left.clone(); @@ -1086,13 +810,10 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - /// V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64); + /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// /// let msg1 = 5; /// let msg2 = 3; @@ -1107,20 +828,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_1); /// let modulus = sks.message_modulus.0; /// assert_eq!(res % modulus, (msg1 * msg2) % modulus); - /// - /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_1 = cks.unchecked_encrypt(msg1); - /// let mut ct_2 = cks.unchecked_encrypt(msg2); - /// - /// // Compute homomorphically a multiplication - /// sks.smart_mul_lsb_assign(&mut ct_1, &mut ct_2); - /// - /// let res = cks.decrypt(&ct_1); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res % modulus, (msg1 * msg2) % modulus); /// ``` pub fn smart_mul_lsb_assign(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) { //Choice of the multiplication algorithm depending on the parameters @@ -1157,9 +864,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1177,19 +882,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_1); /// let modulus = sks.message_modulus.0; /// assert_eq!(res, ((msg1 * msg2) / modulus) % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_1 = cks.unchecked_encrypt(msg1); - /// let mut ct_2 = cks.unchecked_encrypt(msg2); - /// - /// // Compute homomorphically a multiplication: - /// sks.smart_mul_msb_assign(&mut ct_1, &mut ct_2); - /// - /// let res = cks.decrypt(&ct_1); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res, ((msg1 * msg2) / modulus) % modulus); /// ``` pub fn smart_mul_msb_assign(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) { let msg_modulus = ct_left.message_modulus.0; @@ -1208,9 +900,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1240,31 +930,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_res); /// let modulus = sks.message_modulus.0; /// assert_eq!(res, (msg1 * msg2) % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_left = cks.unchecked_encrypt(msg1); - /// // | ct_left | - /// // | carry | message | - /// // |-------|---------| - /// // | 1 1 | 0 0 | - /// let mut ct_right = cks.unchecked_encrypt(msg2); - /// // | ct_right | - /// // | carry | message | - /// // |-------|---------| - /// // | 1 1 | 0 1 | - /// - /// // Compute homomorphically a multiplication: - /// let ct_res = sks.smart_mul_lsb(&mut ct_left, &mut ct_right); - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 0 | - /// - /// let res = cks.decrypt(&ct_res); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res, (msg1 * msg2) % modulus); /// ``` pub fn smart_mul_lsb(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { if ct_left.message_modulus.0 > ct_left.carry_modulus.0 { @@ -1300,9 +965,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -1320,19 +983,6 @@ impl ServerKey { /// let res = cks.decrypt(&ct_res); /// let modulus = sks.message_modulus.0; /// assert_eq!(res, ((msg1 * msg2) / modulus) % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages: - /// let mut ct_1 = cks.unchecked_encrypt(msg1); - /// let mut ct_2 = cks.unchecked_encrypt(msg2); - /// - /// // Compute homomorphically a multiplication: - /// let ct_res = sks.smart_mul_msb(&mut ct_1, &mut ct_2); - /// - /// let res = cks.decrypt(&ct_res); - /// let modulus = sks.message_modulus.0; - /// assert_eq!(res, ((msg1 * msg2) / modulus) % modulus); /// ``` pub fn smart_mul_msb(&self, ct_left: &mut Ciphertext, ct_right: &mut Ciphertext) -> Ciphertext { let msg_modulus = ct_left.message_modulus.0; diff --git a/tfhe/src/shortint/server_key/neg.rs b/tfhe/src/shortint/server_key/neg.rs index 0df234a6a..93c1448cb 100644 --- a/tfhe/src/shortint/server_key/neg.rs +++ b/tfhe/src/shortint/server_key/neg.rs @@ -23,9 +23,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -42,19 +40,6 @@ impl ServerKey { /// let clear_res = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res, modulus - msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a negation - /// let ct_res = sks.neg(&ct); - /// - /// // Decrypt - /// let clear_res = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res, modulus - msg); /// ``` pub fn neg(&self, ct: &Ciphertext) -> Ciphertext { let mut ct_res = ct.clone(); @@ -79,9 +64,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -98,19 +81,6 @@ impl ServerKey { /// let clear_res = cks.decrypt(&ct); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res, modulus - msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a negation - /// sks.neg_assign(&mut ct); - /// - /// // Decrypt - /// let clear_res = cks.decrypt(&ct); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res, modulus - msg); /// ``` pub fn neg_assign(&self, ct: &mut Ciphertext) { if !ct.carry_is_empty() { @@ -131,9 +101,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -150,19 +118,6 @@ impl ServerKey { /// let three = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(modulus - msg, three); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a negation - /// let ct_res = sks.unchecked_neg(&ct); - /// - /// // Decrypt - /// let three = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(modulus - msg, three); /// ``` pub fn unchecked_neg(&self, ct: &Ciphertext) -> Ciphertext { let mut result = ct.clone(); @@ -184,9 +139,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -202,18 +155,6 @@ impl ServerKey { /// // Decrypt /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(modulus - msg, cks.decrypt(&ct)); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a negation - /// sks.unchecked_neg_assign(&mut ct); - /// - /// // Decrypt - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(modulus - msg, cks.decrypt(&ct)); /// ``` pub fn unchecked_neg_assign(&self, ct: &mut Ciphertext) { let _z = self.unchecked_neg_assign_with_correcting_term(ct); @@ -247,9 +188,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -261,14 +200,6 @@ impl ServerKey { /// /// // Check if we can perform a negation /// sks.is_neg_possible(ct.noise_degree()).unwrap(); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// - /// // Check if we can perform a negation - /// sks.is_neg_possible(ct.noise_degree()).unwrap(); /// ``` pub fn is_neg_possible(&self, ct: CiphertextNoiseDegree) -> Result<(), CheckError> { // z = ceil( degree / 2^p ) x 2^p @@ -288,9 +219,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -306,18 +235,6 @@ impl ServerKey { /// let clear_res = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res, modulus - msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a negation: - /// let ct_res = sks.checked_neg(&ct).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res, modulus - msg); /// ``` pub fn checked_neg(&self, ct: &Ciphertext) -> Result { // If the ciphertext cannot be negated without exceeding the capacity of a ciphertext @@ -337,9 +254,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -355,18 +270,6 @@ impl ServerKey { /// let clear_res = cks.decrypt(&ct); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res, modulus - msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically the negation: - /// sks.checked_neg_assign(&mut ct).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res, modulus - msg); /// ``` pub fn checked_neg_assign(&self, ct: &mut Ciphertext) -> Result<(), CheckError> { self.is_neg_possible(ct.noise_degree())?; @@ -383,9 +286,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -402,19 +303,6 @@ impl ServerKey { /// let clear_res = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res, modulus - msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a negation - /// let ct_res = sks.smart_neg(&mut ct); - /// - /// // Decrypt - /// let clear_res = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res, modulus - msg); /// ``` pub fn smart_neg(&self, ct: &mut Ciphertext) -> Ciphertext { // If the ciphertext cannot be negated without exceeding the capacity of a ciphertext @@ -435,9 +323,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -454,19 +340,6 @@ impl ServerKey { /// let clear_res = cks.decrypt(&ct); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(clear_res, modulus - msg); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a negation - /// sks.smart_neg_assign(&mut ct); - /// - /// // Decrypt - /// let clear_res = cks.decrypt(&ct); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(clear_res, modulus - msg); /// ``` pub fn smart_neg_assign(&self, ct: &mut Ciphertext) { // If the ciphertext cannot be negated without exceeding the capacity of a ciphertext diff --git a/tfhe/src/shortint/server_key/scalar_add.rs b/tfhe/src/shortint/server_key/scalar_add.rs index f76dd2a60..01270abf0 100644 --- a/tfhe/src/shortint/server_key/scalar_add.rs +++ b/tfhe/src/shortint/server_key/scalar_add.rs @@ -22,9 +22,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -45,22 +43,6 @@ impl ServerKey { /// let clear = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!((msg + scalar as u64) % modulus, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// let ct_res = sks.scalar_add(&ct, scalar); - /// - /// // The input ciphertext content is not changed - /// assert_eq!(cks.decrypt(&ct), msg); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!((msg + scalar as u64) % modulus, clear); /// ``` pub fn scalar_add(&self, ct: &Ciphertext, scalar: u8) -> Ciphertext { let mut ct_res = ct.clone(); @@ -84,9 +66,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -106,21 +86,6 @@ impl ServerKey { /// (msg + scalar as u64) % cks.parameters.message_modulus().0, /// clear /// ); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// sks.scalar_add_assign(&mut ct, scalar); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct); - /// assert_eq!( - /// (msg + scalar as u64) % cks.parameters.message_modulus().0, - /// clear - /// ); /// ``` pub fn scalar_add_assign(&self, ct: &mut Ciphertext, scalar: u8) { let modulus = self.message_modulus.0; @@ -138,9 +103,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -153,17 +116,6 @@ impl ServerKey { /// /// let clear = cks.decrypt(&ct_res); /// assert_eq!(3, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(1); - /// - /// // Compute homomorphically a scalar addition: - /// let ct_res = sks.unchecked_scalar_add(&ct, 2); - /// - /// let clear = cks.decrypt(&ct_res); - /// assert_eq!(3, clear); /// ``` pub fn unchecked_scalar_add(&self, ct: &Ciphertext, scalar: u8) -> Ciphertext { let mut ct_result = ct.clone(); @@ -181,9 +133,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -196,17 +146,6 @@ impl ServerKey { /// /// let clear = cks.decrypt(&ct); /// assert_eq!(3, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(1); - /// - /// // Compute homomorphically a scalar addition: - /// sks.unchecked_scalar_add_assign(&mut ct, 2); - /// - /// let clear = cks.decrypt(&ct); - /// assert_eq!(3, clear); /// ``` pub fn unchecked_scalar_add_assign(&self, ct: &mut Ciphertext, scalar: u8) { let encoded_scalar = self @@ -223,9 +162,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -235,14 +172,6 @@ impl ServerKey { /// /// // Verification if the scalar addition can be computed: /// sks.is_scalar_add_possible(ct.noise_degree(), 3).unwrap(); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(2); - /// - /// // Verification if the scalar addition can be computed: - /// sks.is_scalar_add_possible(ct.noise_degree(), 3).unwrap(); /// ``` pub fn is_scalar_add_possible( &self, @@ -263,9 +192,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -278,17 +205,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_res); /// assert_eq!(clear_res, 3); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(1); - /// - /// // Compute homomorphically a addition multiplication: - /// let ct_res = sks.checked_scalar_add(&ct, 2).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_res); - /// assert_eq!(clear_res, 3); /// ``` pub fn checked_scalar_add( &self, @@ -311,9 +227,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -326,17 +240,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct); /// assert_eq!(clear_res, 3); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(1); - /// - /// // Compute homomorphically a scalar addition: - /// sks.checked_scalar_add_assign(&mut ct, 2).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct); - /// assert_eq!(clear_res, 3); /// ``` pub fn checked_scalar_add_assign( &self, @@ -359,9 +262,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -382,22 +283,6 @@ impl ServerKey { /// let clear = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(2, clear % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// let ct_res = sks.smart_scalar_add(&mut ct, scalar); - /// - /// // The input ciphertext content is not changed - /// assert_eq!(cks.decrypt(&ct), msg); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(2, clear % modulus); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_add(&self, ct: &mut Ciphertext, scalar: u8) -> Ciphertext { @@ -418,9 +303,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -437,18 +320,6 @@ impl ServerKey { /// // Our result is what we expect /// let clear = cks.decrypt_message_and_carry(&ct); /// assert_eq!(6, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// sks.smart_scalar_add_assign(&mut ct, scalar); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt_message_and_carry(&ct); - /// assert_eq!(6, clear); /// ``` pub fn smart_scalar_add_assign(&self, ct: &mut Ciphertext, scalar: u8) { // Direct scalar computation is possible diff --git a/tfhe/src/shortint/server_key/scalar_div_mod.rs b/tfhe/src/shortint/server_key/scalar_div_mod.rs index 3f52438b8..a3f5fff91 100644 --- a/tfhe/src/shortint/server_key/scalar_div_mod.rs +++ b/tfhe/src/shortint/server_key/scalar_div_mod.rs @@ -47,9 +47,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -66,18 +64,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_res); /// assert_eq!(clear_1 / (clear_2 as u64), res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt one message - /// let ct_1 = cks.encrypt(clear_1); - /// - /// // Compute homomorphically a multiplication - /// let ct_res = sks.unchecked_scalar_div(&ct_1, clear_2); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_res); - /// assert_eq!(clear_1 / (clear_2 as u64), res); /// ``` pub fn unchecked_scalar_div(&self, ct: &Ciphertext, scalar: u8) -> Ciphertext { let mut result = ct.clone(); @@ -139,9 +125,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -157,18 +141,6 @@ impl ServerKey { /// // Decrypt: /// let dec = cks.decrypt(&ct_res); /// assert_eq!(1, dec); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// let ct = cks.encrypt(msg); - /// - /// let modulus: u8 = 2; - /// // Compute homomorphically an addition: - /// let ct_res = sks.unchecked_scalar_mod(&ct, modulus); - /// - /// // Decrypt: - /// let dec = cks.decrypt(&ct_res); - /// assert_eq!(1, dec); /// ``` pub fn unchecked_scalar_mod(&self, ct: &Ciphertext, modulus: u8) -> Ciphertext { let mut result = ct.clone(); diff --git a/tfhe/src/shortint/server_key/scalar_mul.rs b/tfhe/src/shortint/server_key/scalar_mul.rs index 45cb4576d..170592ec9 100644 --- a/tfhe/src/shortint/server_key/scalar_mul.rs +++ b/tfhe/src/shortint/server_key/scalar_mul.rs @@ -20,9 +20,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -40,19 +38,6 @@ impl ServerKey { /// let clear = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(msg * scalar as u64 % modulus, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// let ct_res = sks.scalar_mul(&ct, scalar); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(msg * scalar as u64 % modulus, clear); /// ``` pub fn scalar_mul(&self, ct: &Ciphertext, scalar: u8) -> Ciphertext { let mut ct_res = ct.clone(); @@ -74,9 +59,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -96,21 +79,6 @@ impl ServerKey { /// msg * scalar as u64 % cks.parameters.message_modulus().0, /// clear /// ); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// sks.scalar_mul_assign(&mut ct, scalar); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct); - /// assert_eq!( - /// msg * scalar as u64 % cks.parameters.message_modulus().0, - /// clear - /// ); /// ``` pub fn scalar_mul_assign(&self, ct: &mut Ciphertext, scalar: u8) { let acc = self.generate_msg_lookup_table(|x| scalar as u64 * x, self.message_modulus); @@ -129,9 +97,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -144,17 +110,6 @@ impl ServerKey { /// /// let clear = cks.decrypt(&ct_res); /// assert_eq!(3, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(1); - /// - /// // Compute homomorphically a scalar multiplication: - /// let ct_res = sks.unchecked_scalar_mul(&ct, 3); - /// - /// let clear = cks.decrypt(&ct_res); - /// assert_eq!(3, clear); /// ``` pub fn unchecked_scalar_mul(&self, ct: &Ciphertext, scalar: u8) -> Ciphertext { let mut ct_result = ct.clone(); @@ -175,9 +130,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -190,17 +143,6 @@ impl ServerKey { /// /// let clear = cks.decrypt(&ct); /// assert_eq!(3, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(1); - /// - /// // Compute homomorphically a scalar multiplication: - /// sks.unchecked_scalar_mul_assign(&mut ct, 3); - /// - /// let clear = cks.decrypt(&ct); - /// assert_eq!(3, clear); /// ``` pub fn unchecked_scalar_mul_assign(&self, ct: &mut Ciphertext, scalar: u8) { unchecked_scalar_mul_assign(ct, scalar, self.max_noise_level); @@ -215,9 +157,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -234,18 +174,6 @@ impl ServerKey { /// // Decrypt /// let res = cks.decrypt(&ct_1); /// assert_eq!(clear_2 * clear_1, res); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt two messages - /// let mut ct_1 = cks.encrypt(clear_1); - /// - /// // Compute homomorphically a multiplication - /// sks.unchecked_scalar_mul_lsb_small_carry_modulus_assign(&mut ct_1, clear_2 as u8); - /// - /// // Decrypt - /// let res = cks.decrypt(&ct_1); - /// assert_eq!(clear_2 * clear_1, res); /// ``` pub fn unchecked_scalar_mul_lsb_small_carry_modulus_assign( &self, @@ -266,9 +194,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -278,14 +204,6 @@ impl ServerKey { /// /// // Verification if the scalar multiplication can be computed: /// sks.is_scalar_mul_possible(ct.noise_degree(), 3).unwrap(); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(2); - /// - /// // Verification if the scalar multiplication can be computed: - /// sks.is_scalar_mul_possible(ct.noise_degree(), 3).unwrap(); /// ``` pub fn is_scalar_mul_possible( &self, @@ -314,9 +232,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -329,17 +245,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_res); /// assert_eq!(clear_res, 3); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(1); - /// - /// // Compute homomorphically a scalar multiplication: - /// let ct_res = sks.checked_scalar_mul(&ct, 3).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_res); - /// assert_eq!(clear_res, 3); /// ``` pub fn checked_scalar_mul( &self, @@ -363,9 +268,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -378,17 +281,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct); /// assert_eq!(clear_res, 3); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(1); - /// - /// // Compute homomorphically a scalar multiplication: - /// sks.checked_scalar_mul_assign(&mut ct, 3).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct); - /// assert_eq!(clear_res, 3); /// ``` pub fn checked_scalar_mul_assign( &self, @@ -409,9 +301,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -432,22 +322,6 @@ impl ServerKey { /// let clear = cks.decrypt(&ct_res); /// let modulus = cks.parameters.message_modulus().0; /// assert_eq!(3, clear % modulus); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// let ct_res = sks.smart_scalar_mul(&mut ct, scalar); - /// - /// // The input ciphertext content is not changed - /// assert_eq!(cks.decrypt(&ct), msg); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// assert_eq!(3, clear % modulus); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_mul(&self, ct: &mut Ciphertext, scalar: u8) -> Ciphertext { @@ -466,9 +340,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -485,18 +357,6 @@ impl ServerKey { /// // Our result is what we expect /// let clear = cks.decrypt(&ct); /// assert_eq!(3, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// sks.smart_scalar_mul_assign(&mut ct, scalar); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct); - /// assert_eq!(3, clear); /// ``` pub fn smart_scalar_mul_assign(&self, ct: &mut Ciphertext, scalar: u8) { // Direct scalar computation is possible diff --git a/tfhe/src/shortint/server_key/scalar_sub.rs b/tfhe/src/shortint/server_key/scalar_sub.rs index f1967fdee..ecb1681dd 100644 --- a/tfhe/src/shortint/server_key/scalar_sub.rs +++ b/tfhe/src/shortint/server_key/scalar_sub.rs @@ -22,9 +22,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -45,22 +43,6 @@ impl ServerKey { /// let clear = cks.decrypt(&ct_res); /// /// assert_eq!(msg - scalar as u64, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// let ct_res = sks.scalar_sub(&ct, scalar); - /// - /// // The input ciphertext content is not changed - /// assert_eq!(cks.decrypt(&ct), msg); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct_res); - /// - /// assert_eq!(msg - scalar as u64, clear); /// ``` pub fn scalar_sub(&self, ct: &Ciphertext, scalar: u8) -> Ciphertext { let mut ct_res = ct.clone(); @@ -84,9 +66,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -103,18 +83,6 @@ impl ServerKey { /// // Our result is what we expect /// let clear = cks.decrypt(&ct); /// assert_eq!(msg - scalar as u64, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// sks.scalar_sub_assign(&mut ct, scalar); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct); - /// assert_eq!(msg - scalar as u64, clear); /// ``` pub fn scalar_sub_assign(&self, ct: &mut Ciphertext, scalar: u8) { let modulus = self.message_modulus.0; @@ -132,9 +100,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -148,18 +114,6 @@ impl ServerKey { /// // 5 - 6 mod 4 = 3 mod 4 /// let clear = cks.decrypt(&ct_res); /// assert_eq!(3, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(5); - /// - /// // Compute homomorphically a scalar subtraction: - /// let ct_res = sks.unchecked_scalar_sub(&ct, 6); - /// - /// // 5 - 6 mod 4 = 3 mod 4 - /// let clear = cks.decrypt(&ct_res); - /// assert_eq!(3, clear); /// ``` pub fn unchecked_scalar_sub(&self, ct: &Ciphertext, scalar: u8) -> Ciphertext { let mut ct_result = ct.clone(); @@ -177,9 +131,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -192,17 +144,6 @@ impl ServerKey { /// /// let clear = cks.decrypt(&ct); /// assert_eq!(3, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(5); - /// - /// // Compute homomorphically a scalar subtraction: - /// sks.unchecked_scalar_sub_assign(&mut ct, 2); - /// - /// let clear = cks.decrypt(&ct); - /// assert_eq!(3, clear); /// ``` pub fn unchecked_scalar_sub_assign(&self, ct: &mut Ciphertext, scalar: u8) { let neg_scalar = neg_scalar(scalar, ct.message_modulus); @@ -252,9 +193,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -264,14 +203,6 @@ impl ServerKey { /// /// // Verification if the scalar subtraction can be computed: /// sks.is_scalar_sub_possible(ct.noise_degree(), 3).unwrap(); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(5); - /// - /// // Verification if the scalar subtraction can be computed: - /// sks.is_scalar_sub_possible(ct.noise_degree(), 3).unwrap(); /// ``` pub fn is_scalar_sub_possible( &self, @@ -290,9 +221,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -305,17 +234,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct_res); /// assert_eq!(clear_res, 3); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(5); - /// - /// // Compute homomorphically a subtraction multiplication: - /// let ct_res = sks.checked_scalar_sub(&ct, 2).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct_res); - /// assert_eq!(clear_res, 3); /// ``` pub fn checked_scalar_sub( &self, @@ -335,9 +253,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -350,17 +266,6 @@ impl ServerKey { /// /// let clear_res = cks.decrypt(&ct); /// assert_eq!(clear_res, 3); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(5); - /// - /// // Compute homomorphically a scalar subtraction: - /// sks.checked_scalar_sub_assign(&mut ct, 2).unwrap(); - /// - /// let clear_res = cks.decrypt(&ct); - /// assert_eq!(clear_res, 3); /// ``` pub fn checked_scalar_sub_assign( &self, @@ -380,9 +285,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -403,22 +306,6 @@ impl ServerKey { /// let clear = cks.decrypt(&ct_res); /// /// assert_eq!(msg - scalar as u64, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// let ct_res = sks.smart_scalar_sub(&mut ct, scalar); - /// - /// // The input ciphertext content is not changed - /// assert_eq!(cks.decrypt(&ct), msg); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct_res); - /// - /// assert_eq!(msg - scalar as u64, clear); /// ``` pub fn smart_scalar_sub(&self, ct: &mut Ciphertext, scalar: u8) -> Ciphertext { self.smart_scalar_add(ct, neg_scalar(scalar, ct.message_modulus)) @@ -435,9 +322,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -454,18 +339,6 @@ impl ServerKey { /// // Our result is what we expect /// let clear = cks.decrypt(&ct); /// assert_eq!(msg - scalar as u64, clear); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// - /// // Compute homomorphically a scalar multiplication: - /// sks.smart_scalar_sub_assign(&mut ct, scalar); - /// - /// // Our result is what we expect - /// let clear = cks.decrypt(&ct); - /// assert_eq!(msg - scalar as u64, clear); /// ``` pub fn smart_scalar_sub_assign(&self, ct: &mut Ciphertext, scalar: u8) { self.smart_scalar_add_assign(ct, neg_scalar(scalar, ct.message_modulus)) diff --git a/tfhe/src/shortint/server_key/shift.rs b/tfhe/src/shortint/server_key/shift.rs index f8b10cc5f..2d90b9493 100644 --- a/tfhe/src/shortint/server_key/shift.rs +++ b/tfhe/src/shortint/server_key/shift.rs @@ -21,9 +21,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -48,27 +46,6 @@ impl ServerKey { /// // Decrypt: /// let dec = cks.decrypt(&ct_res); /// assert_eq!(msg >> shift, dec); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Compute homomorphically a right shift - /// let shift: u8 = 1; - /// let ct_res = sks.scalar_right_shift(&ct, shift); - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 1 | - /// - /// // Decrypt: - /// let dec = cks.decrypt(&ct_res); - /// assert_eq!(msg >> shift, dec); /// ``` pub fn scalar_right_shift(&self, ct: &Ciphertext, shift: u8) -> Ciphertext { let mut ct_res = ct.clone(); @@ -91,9 +68,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// /// let msg = 2; @@ -116,27 +91,6 @@ impl ServerKey { /// // Decrypt: /// let dec = cks.decrypt(&ct); /// assert_eq!(msg >> shift, dec); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Compute homomorphically a right shift - /// let shift: u8 = 1; - /// sks.scalar_right_shift_assign(&mut ct, shift); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 1 | - /// - /// // Decrypt: - /// let dec = cks.decrypt(&ct); - /// assert_eq!(msg >> shift, dec); /// ``` pub fn scalar_right_shift_assign(&self, ct: &mut Ciphertext, shift: u8) { let acc = self.generate_msg_lookup_table(|x| x >> shift, self.message_modulus); @@ -149,9 +103,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -176,27 +128,6 @@ impl ServerKey { /// // Decrypt: /// let dec = cks.decrypt(&ct_res); /// assert_eq!(msg >> shift, dec); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Compute homomorphically a right shift - /// let shift: u8 = 1; - /// let ct_res = sks.unchecked_scalar_right_shift(&ct, shift); - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 1 | - /// - /// // Decrypt: - /// let dec = cks.decrypt(&ct_res); - /// assert_eq!(msg >> shift, dec); /// ``` pub fn unchecked_scalar_right_shift(&self, ct: &Ciphertext, shift: u8) -> Ciphertext { let mut result = ct.clone(); @@ -210,9 +141,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// /// let msg = 2; @@ -235,27 +164,6 @@ impl ServerKey { /// // Decrypt: /// let dec = cks.decrypt(&ct); /// assert_eq!(msg >> shift, dec); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Compute homomorphically a right shift - /// let shift: u8 = 1; - /// sks.unchecked_scalar_right_shift_assign(&mut ct, shift); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 1 | - /// - /// // Decrypt: - /// let dec = cks.decrypt(&ct); - /// assert_eq!(msg >> shift, dec); /// ``` pub fn unchecked_scalar_right_shift_assign(&self, ct: &mut Ciphertext, shift: u8) { let acc = self.generate_msg_lookup_table(|x| x >> shift, ct.message_modulus); @@ -280,9 +188,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// /// let msg = 1; @@ -306,28 +212,6 @@ impl ServerKey { /// let modulus = cks.parameters.message_modulus().0; /// /// assert_eq!((msg << shift) % modulus, msg_only); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 1 | - /// - /// let shift: u8 = 1; - /// let ct_res = sks.scalar_left_shift(&ct, shift); - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Decrypt: - /// let msg_only = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// - /// assert_eq!((msg << shift) % modulus, msg_only); /// ``` pub fn scalar_left_shift(&self, ct: &Ciphertext, shift: u8) -> Ciphertext { let mut ct_res = ct.clone(); @@ -351,9 +235,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// /// let msg = 1; @@ -377,28 +259,6 @@ impl ServerKey { /// let modulus = cks.parameters.message_modulus().0; /// /// assert_eq!((msg << shift) % modulus, msg_only); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 0 1 | - /// - /// let shift: u8 = 1; - /// sks.scalar_left_shift_assign(&mut ct, shift); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Decrypt: - /// let msg_only = cks.decrypt(&ct); - /// let modulus = cks.parameters.message_modulus().0; - /// - /// assert_eq!((msg << shift) % modulus, msg_only); /// ``` pub fn scalar_left_shift_assign(&self, ct: &mut Ciphertext, shift: u8) { let modulus = self.message_modulus.0; @@ -412,9 +272,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -443,31 +301,6 @@ impl ServerKey { /// /// assert_eq!(msg << shift, msg_and_carry); /// assert_eq!((msg << shift) % modulus, msg_only); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Compute homomorphically a left shift - /// let shift: u8 = 1; - /// let ct_res = sks.unchecked_scalar_left_shift(&ct, shift); - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 1 | 0 0 | - /// - /// // Decrypt: - /// let msg_and_carry = cks.decrypt_message_and_carry(&ct_res); - /// let msg_only = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// - /// assert_eq!(msg << shift, msg_and_carry); - /// assert_eq!((msg << shift) % modulus, msg_only); /// ``` pub fn unchecked_scalar_left_shift(&self, ct: &Ciphertext, shift: u8) -> Ciphertext { let mut result = ct.clone(); @@ -480,9 +313,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// /// let msg = 2; @@ -509,31 +340,6 @@ impl ServerKey { /// /// assert_eq!(msg << shift, msg_and_carry); /// assert_eq!((msg << shift) % modulus, msg_only); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Compute homomorphically a left shift - /// let shift: u8 = 1; - /// sks.unchecked_scalar_left_shift_assign(&mut ct, shift); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 1 | 0 0 | - /// - /// // Decrypt: - /// let msg_and_carry = cks.decrypt_message_and_carry(&ct); - /// let msg_only = cks.decrypt(&ct); - /// let modulus = cks.parameters.message_modulus().0; - /// - /// assert_eq!(msg << shift, msg_and_carry); - /// assert_eq!((msg << shift) % modulus, msg_only); /// ``` pub fn unchecked_scalar_left_shift_assign(&self, ct: &mut Ciphertext, shift: u8) { let scalar = 1_u8 << shift; @@ -546,9 +352,7 @@ impl ServerKey { /// ///```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -563,16 +367,6 @@ impl ServerKey { /// let res = sks.is_scalar_left_shift_possible(ct1.noise_degree(), shift); /// /// assert!(res.is_err()); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct1 = cks.encrypt(msg); - /// - /// // Check if we can perform an addition - /// let res = sks.is_scalar_left_shift_possible(ct1.noise_degree(), shift); - /// - /// assert!(res.is_err()); /// ``` pub fn is_scalar_left_shift_possible( &self, @@ -599,9 +393,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// /// // Generate the client key and the server key: /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); @@ -635,36 +427,6 @@ impl ServerKey { /// /// assert_eq!(msg << shift, msg_and_carry); /// assert_eq!((msg << shift) % modulus, msg_only); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let ct1 = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// // Shifting 3 times is not ok, as it exceeds the carry buffer - /// let ct_res = sks.checked_scalar_left_shift(&ct1, 3); - /// assert!(ct_res.is_err()); - /// - /// // Shifting 2 times is ok - /// let shift = 2; - /// let ct_res = sks.checked_scalar_left_shift(&ct1, shift).unwrap(); - /// - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 1 0 | 0 0 | - /// - /// // Decrypt: - /// let msg_and_carry = cks.decrypt_message_and_carry(&ct_res); - /// let msg_only = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// - /// assert_eq!(msg << shift, msg_and_carry); - /// assert_eq!((msg << shift) % modulus, msg_only); /// ``` pub fn checked_scalar_left_shift( &self, @@ -695,9 +457,7 @@ impl ServerKey { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::{ - /// PARAM_MESSAGE_2_CARRY_2_KS_PBS, V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64, - /// }; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// /// let msg = 2; @@ -723,30 +483,6 @@ impl ServerKey { /// /// assert_eq!(msg << shift, msg_and_carry); /// assert_eq!((msg << shift) % modulus, msg_only); - /// - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64); - /// - /// // Encrypt a message - /// let mut ct = cks.encrypt(msg); - /// // | ct | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 0 | 1 0 | - /// - /// let shift: u8 = 1; - /// let ct_res = sks.smart_scalar_left_shift(&mut ct, shift); - /// // | ct_res | - /// // | carry | message | - /// // |-------|---------| - /// // | 0 1 | 0 0 | - /// - /// // Decrypt: - /// let msg_and_carry = cks.decrypt_message_and_carry(&ct_res); - /// let msg_only = cks.decrypt(&ct_res); - /// let modulus = cks.parameters.message_modulus().0; - /// - /// assert_eq!(msg << shift, msg_and_carry); - /// assert_eq!((msg << shift) % modulus, msg_only); /// ``` #[allow(clippy::needless_pass_by_ref_mut)] pub fn smart_scalar_left_shift(&self, ct: &mut Ciphertext, shift: u8) -> Ciphertext { diff --git a/tfhe/src/shortint/server_key/tests/modulus_switch_compression.rs b/tfhe/src/shortint/server_key/tests/modulus_switch_compression.rs index 6e578604c..c5cd20c2d 100644 --- a/tfhe/src/shortint/server_key/tests/modulus_switch_compression.rs +++ b/tfhe/src/shortint/server_key/tests/modulus_switch_compression.rs @@ -1,6 +1,7 @@ use super::NB_TESTS; use crate::shortint::keycache::KEY_CACHE; -use crate::shortint::parameters::*; +use crate::shortint::parameters::current_params::*; +use crate::shortint::parameters::{NoiseLevel, PBSParameters}; use crate::shortint::server_key::tests::parameterized_test::create_parameterized_test; use rand::Rng; diff --git a/tfhe/src/shortint/server_key/tests/parameterized_test.rs b/tfhe/src/shortint/server_key/tests/parameterized_test.rs index 6289e3537..1693b1776 100644 --- a/tfhe/src/shortint/server_key/tests/parameterized_test.rs +++ b/tfhe/src/shortint/server_key/tests/parameterized_test.rs @@ -1,5 +1,6 @@ use super::{NB_SUB_TEST_SMART, NB_TESTS, NB_TESTS_SMART}; use crate::shortint::keycache::KEY_CACHE; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use crate::shortint::server_key::{LookupTableOwned, ManyLookupTableOwned}; use rand::Rng; @@ -20,34 +21,35 @@ macro_rules! create_parameterized_test{ ($name:ident)=> { create_parameterized_test!($name { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M128, + // 2M128 are 2x slower and killing tests + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M128, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, @@ -74,7 +76,7 @@ macro_rules! create_parameterized_test{ ($name:ident)=> { create_parameterized_test!($name { - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 }); @@ -143,19 +145,31 @@ create_parameterized_test!( #[cfg(not(tarpaulin))] #[test] fn test_shortint_compressed_public_key_smart_add_param_message_1_carry_1_ks_pbs() { - shortint_compressed_public_key_smart_add(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + shortint_compressed_public_key_smart_add(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); } #[cfg(not(tarpaulin))] #[test] fn test_shortint_public_key_smart_add_param_message_1_carry_1_ks_pbs() { - shortint_public_key_smart_add(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + shortint_public_key_smart_add(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); } #[cfg(not(tarpaulin))] #[test] fn test_shortint_public_key_smart_add_param_message_2_carry_2_ks_pbs() { - shortint_public_key_smart_add(V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64); + shortint_public_key_smart_add(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); +} + +#[test] +fn test_shortint_keyswitch_programmable_bootstrap_pbs_ks_ci_run_filter() { + shortint_keyswitch_programmable_bootstrap(V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128); +} + +#[test] +fn test_shortint_keyswitch_programmable_bootstrap_many_lut_pbs_ks_ci_run_filter() { + shortint_keyswitch_programmable_bootstrap_many_lut( + V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128, + ); } fn shortint_encrypt_decrypt

(param: P) diff --git a/tfhe/src/shortint/server_key/tests/parameterized_test_bivariate_pbs_compliant.rs b/tfhe/src/shortint/server_key/tests/parameterized_test_bivariate_pbs_compliant.rs index 5080aad3c..590597c7b 100644 --- a/tfhe/src/shortint/server_key/tests/parameterized_test_bivariate_pbs_compliant.rs +++ b/tfhe/src/shortint/server_key/tests/parameterized_test_bivariate_pbs_compliant.rs @@ -1,5 +1,6 @@ use crate::shortint::keycache::KEY_CACHE; -use crate::shortint::parameters::*; +use crate::shortint::parameters::current_params::*; +use crate::shortint::parameters::PBSParameters; use crate::shortint::server_key::tests::parameterized_test::create_parameterized_test; use rand::Rng; @@ -41,22 +42,23 @@ macro_rules! create_parameterized_test_bivariate_pbs_compliant{ ($name:ident)=> { create_parameterized_test!($name { - V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M128, + // 2M128 are 2x slower and killing tests + V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, @@ -83,7 +85,7 @@ macro_rules! create_parameterized_test_bivariate_pbs_compliant{ ($name:ident)=> { create_parameterized_test!($name { - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, + V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128, V1_0_PARAM_MULTI_BIT_GROUP_2_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, V1_0_PARAM_MULTI_BIT_GROUP_3_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64 }); @@ -96,19 +98,19 @@ macro_rules! create_parameterized_test_bivariate_pbs_compliant{ #[cfg(not(tarpaulin))] #[test] fn test_shortint_compressed_public_key_smart_add_param_message_1_carry_1_ks_pbs() { - shortint_compressed_public_key_smart_add(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + shortint_compressed_public_key_smart_add(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); } #[cfg(not(tarpaulin))] #[test] fn test_shortint_public_key_smart_add_param_message_1_carry_1_ks_pbs() { - shortint_public_key_smart_add(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); + shortint_public_key_smart_add(V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128); } #[cfg(not(tarpaulin))] #[test] fn test_shortint_public_key_smart_add_param_message_2_carry_2_ks_pbs() { - shortint_public_key_smart_add(PARAM_MESSAGE_2_CARRY_2_KS_PBS); + shortint_public_key_smart_add(V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); } //These functions are compatible with some parameter sets where the carry modulus is larger than diff --git a/tfhe/src/shortint/server_key/tests/shortint_compact_pk.rs b/tfhe/src/shortint/server_key/tests/shortint_compact_pk.rs index f08c23ade..c46592a46 100644 --- a/tfhe/src/shortint/server_key/tests/shortint_compact_pk.rs +++ b/tfhe/src/shortint/server_key/tests/shortint_compact_pk.rs @@ -1,5 +1,5 @@ use crate::shortint::keycache::KEY_CACHE; -use crate::shortint::parameters::classic::compact_pk::*; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::*; use rand::Rng; @@ -35,38 +35,38 @@ macro_rules! create_parameterized_test{ ($name:ident)=> { create_parameterized_test!($name { - V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_GAUSSIAN_2M128 }); }; } @@ -87,8 +87,8 @@ macro_rules! create_parameterized_test{ ($name:ident)=> { create_parameterized_test!($name { - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64 + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, + V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128 }); }; } diff --git a/tfhe/src/shortint/wopbs/mod.rs b/tfhe/src/shortint/wopbs/mod.rs index ed3603eeb..288e50bf7 100644 --- a/tfhe/src/shortint/wopbs/mod.rs +++ b/tfhe/src/shortint/wopbs/mod.rs @@ -256,13 +256,13 @@ mod experimental { /// /// ```rust /// use tfhe::shortint::gen_keys; - /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS; - /// use tfhe::shortint::parameters::V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64; + /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::shortint::wopbs::*; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64); - /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS); + /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); + /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// ``` pub fn new_wopbs_key( cks: &ClientKey, @@ -343,11 +343,11 @@ mod experimental { /// ```rust /// use tfhe::shortint::gen_keys; /// use tfhe::shortint::parameters::parameters_wopbs_message_carry::LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; /// use tfhe::shortint::wopbs::*; /// /// // Generate the client key and the server key: - /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS); + /// let (cks, sks) = gen_keys(PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128); /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// let message_modulus = LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS.message_modulus.0; /// let m = 2; @@ -426,10 +426,10 @@ mod experimental { /// let message_modulus = MessageModulus(5); /// let m = 2; /// let ct = cks.encrypt_native_crt(m, message_modulus); - /// let lut = wopbs_key.generate_lut_native_crt(&ct, |x| x * x % message_modulus.0 as u64); + /// let lut = wopbs_key.generate_lut_native_crt(&ct, |x| x * x % message_modulus.0); /// let ct_res = wopbs_key.programmable_bootstrapping_native_crt(&ct, &lut); /// let res = cks.decrypt_message_native_crt(&ct_res, message_modulus); - /// assert_eq!(res, (m * m) % message_modulus.0 as u64); + /// assert_eq!(res, (m * m) % message_modulus.0); /// ``` pub fn generate_lut_native_crt(&self, ct: &Ciphertext, f: F) -> ShortintWopbsLUT where @@ -465,7 +465,7 @@ mod experimental { /// let wopbs_key = WopbsKey::new_wopbs_key(&cks, &sks, &LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS); /// let mut rng = rand::thread_rng(); /// let message_modulus = LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS.message_modulus.0; - /// let ct = cks.encrypt(rng.gen::() % message_modulus as u64); + /// let ct = cks.encrypt(rng.gen::() % message_modulus); /// let lut = vec![1_u64 << 59; wopbs_key.param.polynomial_size.0].into(); /// let ct_res = wopbs_key.programmable_bootstrapping(&sks, &ct, &lut); /// let res = cks.decrypt_message_and_carry(&ct_res); @@ -501,7 +501,7 @@ mod experimental { /// let wopbs_key = WopbsKey::new_wopbs_key_only_for_wopbs(&cks, &sks); /// let mut rng = rand::thread_rng(); /// let message_modulus = LEGACY_WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS.message_modulus.0; - /// let ct = cks.encrypt(rng.gen::() % message_modulus as u64); + /// let ct = cks.encrypt(rng.gen::() % message_modulus); /// let lut = vec![1_u64 << 59; wopbs_key.param.polynomial_size.0].into(); /// let ct_res = wopbs_key.wopbs(&ct, &lut); /// let res = cks.decrypt_message_and_carry(&ct_res); diff --git a/tfhe/src/shortint/wopbs/test.rs b/tfhe/src/shortint/wopbs/test.rs index 3468f4fc5..fec8e5636 100644 --- a/tfhe/src/shortint/wopbs/test.rs +++ b/tfhe/src/shortint/wopbs/test.rs @@ -1,11 +1,7 @@ use crate::shortint::keycache::KEY_CACHE_WOPBS; +use crate::shortint::parameters::current_params::*; use crate::shortint::parameters::parameters_wopbs::*; -use crate::shortint::parameters::{ - MessageModulus, V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, - V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, -}; +use crate::shortint::parameters::*; use crate::shortint::wopbs::WopbsKey; use crate::shortint::{gen_keys, ClassicPBSParameters}; use rand::Rng; @@ -27,10 +23,10 @@ macro_rules! create_parameterized_test{ ($name:ident)=> { create_parameterized_test!($name { - (V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS), - (V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS), - (V0_11_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS), - (V0_11_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS) + (V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS), + (V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS), + (V1_0_PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS), + (V1_0_PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS) }); }; } @@ -74,7 +70,7 @@ macro_rules! create_parameterized_test{ ($name:ident)=> { create_parameterized_test!($name { - (V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS) + (V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64, LEGACY_WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS) }); }; } diff --git a/tfhe/src/strings/ciphertext.rs b/tfhe/src/strings/ciphertext.rs index a5e5eaaec..92cb10619 100644 --- a/tfhe/src/strings/ciphertext.rs +++ b/tfhe/src/strings/ciphertext.rs @@ -422,11 +422,11 @@ pub(super) fn num_ascii_blocks(message_modulus: MessageModulus) -> usize { mod tests { use super::*; use crate::integer::ClientKey as IntegerClientKey; - use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; #[test] fn test_uint_conversion() { - let ck = IntegerClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + let ck = IntegerClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let ck = ClientKey::new(ck); diff --git a/tfhe/src/strings/server_key/comp.rs b/tfhe/src/strings/server_key/comp.rs index ead2f6f1b..ecdd785b0 100644 --- a/tfhe/src/strings/server_key/comp.rs +++ b/tfhe/src/strings/server_key/comp.rs @@ -53,10 +53,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -113,10 +113,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -146,10 +146,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -186,10 +186,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -226,10 +226,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -265,10 +265,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -308,10 +308,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/server_key/no_patterns.rs b/tfhe/src/strings/server_key/no_patterns.rs index be8535300..6e8892f81 100644 --- a/tfhe/src/strings/server_key/no_patterns.rs +++ b/tfhe/src/strings/server_key/no_patterns.rs @@ -15,10 +15,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// use tfhe::strings::server_key::FheStringLen; - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -79,11 +79,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// use tfhe::strings::server_key::FheStringIsEmpty; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -133,10 +133,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -190,10 +190,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -249,10 +249,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -306,10 +306,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, UIntArg}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/server_key/pattern/contains.rs b/tfhe/src/strings/server_key/pattern/contains.rs index 4ec7a9afd..e080ea8d6 100644 --- a/tfhe/src/strings/server_key/pattern/contains.rs +++ b/tfhe/src/strings/server_key/pattern/contains.rs @@ -88,10 +88,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{ClearString, FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -153,10 +153,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{ClearString, FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -235,10 +235,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{ClearString, FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/server_key/pattern/find.rs b/tfhe/src/strings/server_key/pattern/find.rs index f874169d3..d91efc394 100644 --- a/tfhe/src/strings/server_key/pattern/find.rs +++ b/tfhe/src/strings/server_key/pattern/find.rs @@ -104,10 +104,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -182,10 +182,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/server_key/pattern/replace.rs b/tfhe/src/strings/server_key/pattern/replace.rs index 8a79ddd28..8088cf263 100644 --- a/tfhe/src/strings/server_key/pattern/replace.rs +++ b/tfhe/src/strings/server_key/pattern/replace.rs @@ -214,10 +214,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern, UIntArg}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -345,10 +345,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{ClearString, FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/server_key/pattern/split/mod.rs b/tfhe/src/strings/server_key/pattern/split/mod.rs index 25192f4d3..aed878cc7 100644 --- a/tfhe/src/strings/server_key/pattern/split/mod.rs +++ b/tfhe/src/strings/server_key/pattern/split/mod.rs @@ -77,10 +77,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -153,10 +153,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/server_key/pattern/split/split_iters.rs b/tfhe/src/strings/server_key/pattern/split/split_iters.rs index c995a8949..56bf05503 100644 --- a/tfhe/src/strings/server_key/pattern/split/split_iters.rs +++ b/tfhe/src/strings/server_key/pattern/split/split_iters.rs @@ -49,11 +49,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// use tfhe::strings::server_key::FheStringIterator; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -99,11 +99,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// use tfhe::strings::server_key::FheStringIterator; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -150,11 +150,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern, UIntArg}; /// use tfhe::strings::server_key::FheStringIterator; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -207,11 +207,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern, UIntArg}; /// use tfhe::strings::server_key::FheStringIterator; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -262,11 +262,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// use tfhe::strings::server_key::FheStringIterator; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -315,11 +315,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// use tfhe::strings::server_key::FheStringIterator; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -371,11 +371,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{FheString, GenericPattern}; /// use tfhe::strings::server_key::FheStringIterator; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/server_key/pattern/strip.rs b/tfhe/src/strings/server_key/pattern/strip.rs index 80bb7646f..bf092eb6d 100644 --- a/tfhe/src/strings/server_key/pattern/strip.rs +++ b/tfhe/src/strings/server_key/pattern/strip.rs @@ -111,10 +111,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{ClearString, FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -204,10 +204,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::{ClearString, FheString, GenericPattern}; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/server_key/trim.rs b/tfhe/src/strings/server_key/trim.rs index 8f68db1c2..4e39e6d18 100644 --- a/tfhe/src/strings/server_key/trim.rs +++ b/tfhe/src/strings/server_key/trim.rs @@ -198,10 +198,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -258,10 +258,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -302,10 +302,10 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; - /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + /// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// - /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + /// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); @@ -341,11 +341,11 @@ impl + Sync> ServerKey { /// /// ```rust /// use tfhe::integer::{ClientKey, ServerKey}; -/// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +/// use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; /// use tfhe::strings::ciphertext::FheString; /// use tfhe::strings::server_key::{split_ascii_whitespace, FheStringIterator}; /// -/// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); +/// let ck = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); /// let sk = ServerKey::new_radix_server_key(&ck); /// let ck = tfhe::strings::ClientKey::new(ck); /// let sk = tfhe::strings::ServerKey::new(sk); diff --git a/tfhe/src/strings/test_functions/test_common.rs b/tfhe/src/strings/test_functions/test_common.rs index b7059008b..b081e0d06 100644 --- a/tfhe/src/strings/test_functions/test_common.rs +++ b/tfhe/src/strings/test_functions/test_common.rs @@ -2,7 +2,7 @@ use crate::integer::keycache::KEY_CACHE; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::FunctionExecutor; use crate::integer::server_key::radix_parallel::tests_unsigned::{CpuFunctionExecutor, NotTuple}; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey as IntegerServerKey}; -use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::shortint::PBSParameters; use crate::strings::ciphertext::{ClearString, FheString, GenericPattern, GenericPatternRef}; use crate::strings::client_key::ClientKey; @@ -11,7 +11,7 @@ use std::sync::Arc; #[test] fn test_encrypt_decrypt_parameterized() { - test_encrypt_decrypt(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + test_encrypt_decrypt(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } fn test_encrypt_decrypt

(param: P) @@ -35,7 +35,7 @@ where #[test] fn is_empty_test_parameterized() { - is_empty_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + is_empty_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } impl NotTuple for &FheString {} @@ -105,7 +105,7 @@ where #[test] fn len_test_parameterized() { - len_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + len_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -183,7 +183,7 @@ where #[test] fn strip_test_parameterized() { - strip_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + strip_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -293,7 +293,7 @@ const TEST_CASES_COMP: [&str; 5] = ["", "a", "aa", "ab", "abc"]; #[test] fn comp_test_parameterized() { - comp_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + comp_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] diff --git a/tfhe/src/strings/test_functions/test_compact.rs b/tfhe/src/strings/test_functions/test_compact.rs index 65d161f4c..f3cb6b88d 100644 --- a/tfhe/src/strings/test_functions/test_compact.rs +++ b/tfhe/src/strings/test_functions/test_compact.rs @@ -1,6 +1,3 @@ -use compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - use crate::integer::ciphertext::{ CompactCiphertextListBuilder, DataKind, IntegerCompactCiphertextListExpansionMode, }; @@ -11,9 +8,9 @@ use crate::strings::ciphertext::{ClearString, FheString}; #[test] fn test_compact_list_with_string_casting() { - let pke_params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let ksk_params = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let pke_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let ksk_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let cks = ClientKey::new(fhe_params); let sk = ServerKey::new_radix_server_key(&cks); @@ -80,7 +77,7 @@ fn test_compact_list_with_string_casting() { #[test] fn test_compact_list_with_string_no_casting() { - let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let cks = ClientKey::new(fhe_params); let sk = ServerKey::new_radix_server_key(&cks); @@ -137,9 +134,9 @@ fn test_compact_list_with_string_no_casting() { #[test] fn test_compact_list_with_malicious_string_casting() { - let pke_params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let ksk_params = V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; - let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let pke_params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let ksk_params = PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; + let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let cks = ClientKey::new(fhe_params); let sk = ServerKey::new_radix_server_key(&cks); @@ -188,7 +185,7 @@ fn test_compact_list_with_malicious_string_casting() { #[test] fn test_compact_list_with_malicious_string_no_casting() { - let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let fhe_params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let cks = ClientKey::new(fhe_params); let sk = ServerKey::new_radix_server_key(&cks); diff --git a/tfhe/src/strings/test_functions/test_compression.rs b/tfhe/src/strings/test_functions/test_compression.rs index 94922ea28..c2d31454f 100644 --- a/tfhe/src/strings/test_functions/test_compression.rs +++ b/tfhe/src/strings/test_functions/test_compression.rs @@ -7,7 +7,7 @@ use rand::prelude::*; #[test] fn test_compressed_list_with_strings() { - let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64.into(); + let params = PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128.into(); const NB_TESTS: usize = 5; const MAX_STRING_SIZE: u32 = 255; const MAX_PADDING_SIZE: u32 = 50; @@ -15,7 +15,7 @@ fn test_compressed_list_with_strings() { let (cks, _) = gen_keys::(params, IntegerKeyKind::Radix); let private_compression_key = - cks.new_compression_private_key(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + cks.new_compression_private_key(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); let (compression_key, decompression_key) = cks.new_compression_decompression_keys(&private_compression_key); diff --git a/tfhe/src/strings/test_functions/test_concat.rs b/tfhe/src/strings/test_functions/test_concat.rs index d84ebeeb6..8694db42c 100644 --- a/tfhe/src/strings/test_functions/test_concat.rs +++ b/tfhe/src/strings/test_functions/test_concat.rs @@ -2,7 +2,7 @@ use crate::integer::keycache::KEY_CACHE; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::FunctionExecutor; use crate::integer::server_key::radix_parallel::tests_unsigned::CpuFunctionExecutor; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey as IntegerServerKey}; -use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::shortint::PBSParameters; use crate::strings::ciphertext::{FheString, UIntArg}; use crate::strings::client_key::ClientKey; @@ -13,7 +13,7 @@ const TEST_CASES_CONCAT: [&str; 5] = ["", "a", "ab", "abc", "abcd"]; #[test] fn concat_test_parameterized() { - concat_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + concat_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -78,7 +78,7 @@ where #[test] fn repeat_test_parameterized() { - repeat_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + repeat_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] diff --git a/tfhe/src/strings/test_functions/test_contains.rs b/tfhe/src/strings/test_functions/test_contains.rs index 22b7daa46..ad901e6ca 100644 --- a/tfhe/src/strings/test_functions/test_contains.rs +++ b/tfhe/src/strings/test_functions/test_contains.rs @@ -2,7 +2,7 @@ use crate::integer::keycache::KEY_CACHE; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::FunctionExecutor; use crate::integer::server_key::radix_parallel::tests_unsigned::CpuFunctionExecutor; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey as IntegerServerKey}; -use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::shortint::PBSParameters; use crate::strings::ciphertext::{ClearString, FheString, GenericPattern, GenericPatternRef}; use crate::strings::client_key::ClientKey; @@ -11,7 +11,7 @@ use std::sync::Arc; #[test] fn contains_test_parameterized() { - contains_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + contains_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] diff --git a/tfhe/src/strings/test_functions/test_find_replace.rs b/tfhe/src/strings/test_functions/test_find_replace.rs index 080f5f29e..2a6b0116a 100644 --- a/tfhe/src/strings/test_functions/test_find_replace.rs +++ b/tfhe/src/strings/test_functions/test_find_replace.rs @@ -4,7 +4,7 @@ use crate::integer::server_key::radix_parallel::tests_unsigned::CpuFunctionExecu use crate::integer::{ BooleanBlock, IntegerKeyKind, RadixCiphertext, RadixClientKey, ServerKey as IntegerServerKey, }; -use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::shortint::PBSParameters; use crate::strings::ciphertext::{ ClearString, FheString, GenericPattern, GenericPatternRef, UIntArg, @@ -19,7 +19,7 @@ const PATTERN_FIND: [&str; 5] = ["", "a", "b", "ab", "abc"]; #[test] fn find_test_parameterized() { - find_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + find_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -130,7 +130,7 @@ pub(crate) fn find_test_impl( #[test] fn replace_test_parameterized() { - replace_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + replace_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -226,7 +226,7 @@ where #[test] fn replacen_test_parameterized() { - replacen_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + replacen_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] diff --git a/tfhe/src/strings/test_functions/test_split.rs b/tfhe/src/strings/test_functions/test_split.rs index 22d71da28..a70cf552b 100644 --- a/tfhe/src/strings/test_functions/test_split.rs +++ b/tfhe/src/strings/test_functions/test_split.rs @@ -2,7 +2,7 @@ use crate::integer::keycache::KEY_CACHE; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::FunctionExecutor; use crate::integer::server_key::radix_parallel::tests_unsigned::CpuFunctionExecutor; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey as IntegerServerKey}; -use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::shortint::PBSParameters; use crate::strings::ciphertext::{ ClearString, FheString, GenericPattern, GenericPatternRef, UIntArg, @@ -38,7 +38,7 @@ const TEST_CASES_SPLIT: [(&str, &str); 21] = [ #[test] fn split_once_test_parameterized() { - split_once_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + split_once_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -158,7 +158,7 @@ pub(crate) fn split_once_test_impl( #[test] fn split_test_parameterized() { - split_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + split_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -306,7 +306,7 @@ pub(crate) fn split_test_impl( #[test] fn splitn_test_parameterized() { - splitn_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + splitn_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] diff --git a/tfhe/src/strings/test_functions/test_up_low_case.rs b/tfhe/src/strings/test_functions/test_up_low_case.rs index d344d08a4..62a26ffe1 100644 --- a/tfhe/src/strings/test_functions/test_up_low_case.rs +++ b/tfhe/src/strings/test_functions/test_up_low_case.rs @@ -2,7 +2,7 @@ use crate::integer::keycache::KEY_CACHE; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::FunctionExecutor; use crate::integer::server_key::radix_parallel::tests_unsigned::CpuFunctionExecutor; use crate::integer::{BooleanBlock, IntegerKeyKind, RadixClientKey, ServerKey as IntegerServerKey}; -use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::shortint::PBSParameters; use crate::strings::ciphertext::{ClearString, FheString, GenericPattern, GenericPatternRef}; use crate::strings::client_key::ClientKey; @@ -21,7 +21,7 @@ const UP_LOW_CASE: [&str; 21] = [ #[test] fn to_lower_upper_case_test_parameterized() { - to_lower_upper_case_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + to_lower_upper_case_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -104,7 +104,7 @@ pub(crate) fn to_lower_upper_case_test_impl( #[test] fn eq_ignore_case_test_parameterized() { - eq_ignore_case_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + eq_ignore_case_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] diff --git a/tfhe/src/strings/test_functions/test_whitespace.rs b/tfhe/src/strings/test_functions/test_whitespace.rs index 1ecd8c308..9b985be7d 100644 --- a/tfhe/src/strings/test_functions/test_whitespace.rs +++ b/tfhe/src/strings/test_functions/test_whitespace.rs @@ -2,7 +2,7 @@ use crate::integer::keycache::KEY_CACHE; use crate::integer::server_key::radix_parallel::tests_cases_unsigned::FunctionExecutor; use crate::integer::server_key::radix_parallel::tests_unsigned::CpuFunctionExecutor; use crate::integer::{IntegerKeyKind, RadixClientKey, ServerKey as IntegerServerKey}; -use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; use crate::shortint::PBSParameters; use crate::strings::ciphertext::FheString; use crate::strings::client_key::ClientKey; @@ -14,7 +14,7 @@ const WHITESPACES: [&str; 5] = [" ", "\n", "\t", "\r", "\u{000C}"]; #[test] fn trim_test_parameterized() { - trim_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + trim_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] @@ -114,7 +114,7 @@ pub(crate) fn trim_test_impl( #[test] fn split_whitespace_test_parameterized() { - split_whitespace_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64); + split_whitespace_test(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128); } #[allow(clippy::needless_pass_by_value)] diff --git a/tfhe/src/zk/mod.rs b/tfhe/src/zk/mod.rs index c62daf5bc..5ef2052f3 100644 --- a/tfhe/src/zk/mod.rs +++ b/tfhe/src/zk/mod.rs @@ -716,12 +716,12 @@ impl Compressible for CompactPkeCrs { mod test { use super::*; use crate::safe_serialization::{safe_deserialize_conformant, safe_serialize}; - use crate::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + use crate::shortint::parameters::*; use crate::shortint::{CarryModulus, MessageModulus}; #[test] fn test_crs_conformance() { - let params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let mut bad_params = params; bad_params.carry_modulus = CarryModulus(8); bad_params.message_modulus = MessageModulus(8); @@ -757,7 +757,7 @@ mod test { #[test] fn test_crs_serialization() { - let params = V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; + let params = PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128; let mut rng = rand::thread_rng(); diff --git a/tfhe/tests/zk_wasm_x86_test.rs b/tfhe/tests/zk_wasm_x86_test.rs index d341a97c1..1bb08c7a4 100644 --- a/tfhe/tests/zk_wasm_x86_test.rs +++ b/tfhe/tests/zk_wasm_x86_test.rs @@ -11,9 +11,7 @@ use std::fs::File; use std::path::{Path, PathBuf}; use std::process::Command; use tfhe::safe_serialization::{safe_deserialize, safe_serialize}; -use tfhe::shortint::parameters::compact_public_key_only::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::key_switching::p_fail_2_minus_64::ks_pbs::V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; -use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64; +use tfhe::shortint::parameters::*; use tfhe::zk::CompactPkeCrs; use tfhe::{ClientKey, CompactPublicKey, ConfigBuilder, ProvenCompactCiphertextList}; @@ -23,10 +21,10 @@ const METADATA: [u8; 6] = [b'w', b'a', b's', b'm', b'6', b'4']; fn gen_key_and_crs() -> (CompactPublicKey, CompactPkeCrs) { println!("Generating keys"); let config = - crate::ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64) + crate::ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128) .use_dedicated_compact_public_key_parameters(( - V0_11_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, - V0_11_PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, + PARAM_KEYSWITCH_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, )) .build(); diff --git a/tfhe/web_wasm_parallel_tests/worker.js b/tfhe/web_wasm_parallel_tests/worker.js index d0712603a..2c72f5435 100644 --- a/tfhe/web_wasm_parallel_tests/worker.js +++ b/tfhe/web_wasm_parallel_tests/worker.js @@ -48,7 +48,7 @@ function append_param_name(bench_results, params_name) { async function compressedPublicKeyTest() { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -80,7 +80,7 @@ async function compressedPublicKeyTest() { async function publicKeyTest() { let params_name_small = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M128; let params_small = new ShortintParameters(params_name_small); let config = TfheConfigBuilder.with_custom_parameters(params_small).build(); @@ -161,7 +161,7 @@ async function compactPublicKeyBench32BitOnConfig(config) { async function compactPublicKeyBench32BitBig() { const params = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; const block_params = new ShortintParameters(params); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -174,7 +174,7 @@ async function compactPublicKeyBench32BitBig() { async function compactPublicKeyBench32BitSmall() { const params = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128; const block_params = new ShortintParameters(params); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -251,10 +251,10 @@ async function compressedCompactPublicKeyTest256BitOnConfig(config) { async function compactPublicKeyWithCastingTest256Bit() { let block_params = new ShortintParameters( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let casting_params = new ShortintCompactPublicKeyEncryptionParameters( - ShortintCompactPublicKeyEncryptionParametersName.SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintCompactPublicKeyEncryptionParametersName.PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let config = TfheConfigBuilder.default() @@ -306,10 +306,10 @@ async function compactPublicKeyWithCastingTest256Bit() { async function compressedCompactPublicKeyWithCastingTest256Bit() { let block_params = new ShortintParameters( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let casting_params = new ShortintCompactPublicKeyEncryptionParameters( - ShortintCompactPublicKeyEncryptionParametersName.SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintCompactPublicKeyEncryptionParametersName.PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let config = TfheConfigBuilder.default() @@ -362,10 +362,10 @@ async function compressedCompactPublicKeyWithCastingTest256Bit() { async function compactPublicKeyZeroKnowledgeTest() { let block_params = new ShortintParameters( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let casting_params = new ShortintCompactPublicKeyEncryptionParameters( - ShortintCompactPublicKeyEncryptionParametersName.SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintCompactPublicKeyEncryptionParametersName.PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ); let config = TfheConfigBuilder.default() @@ -477,7 +477,7 @@ async function compactPublicKeyZeroKnowledgeTest() { async function compressedCompactPublicKeyTest256BitBig() { const block_params = new ShortintParameters( - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64, + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128, ); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -487,7 +487,7 @@ async function compressedCompactPublicKeyTest256BitBig() { async function compressedCompactPublicKeyTest256BitSmall() { const block_params = new ShortintParameters( - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64, + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128, ); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -558,7 +558,7 @@ async function compactPublicKeyBench256BitOnConfig(config) { async function compactPublicKeyBench256BitBig() { const params = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_GAUSSIAN_2M128; const block_params = new ShortintParameters(params); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -571,7 +571,7 @@ async function compactPublicKeyBench256BitBig() { async function compactPublicKeyBench256BitSmall() { const params = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_GAUSSIAN_2M128; const block_params = new ShortintParameters(params); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -618,7 +618,7 @@ async function compressedServerKeyBenchConfig(config) { async function compressedServerKeyBenchMessage1Carry1() { const params = - ShortintParametersName.V0_11_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M128; const block_params = new ShortintParameters(params); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -631,7 +631,7 @@ async function compressedServerKeyBenchMessage1Carry1() { async function compressedServerKeyBenchMessage2Carry2() { const params = - ShortintParametersName.V0_11_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64; + ShortintParametersName.V1_0_PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M128; const block_params = new ShortintParameters(params); let config = TfheConfigBuilder.default() .use_custom_parameters(block_params) @@ -647,25 +647,25 @@ async function compactPublicKeyZeroKnowledgeBench() { { zk_scheme: "ZKV2", name: shortint_params_name( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), block_params: new ShortintParameters( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), casting_params: new ShortintCompactPublicKeyEncryptionParameters( - ShortintCompactPublicKeyEncryptionParametersName.SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintCompactPublicKeyEncryptionParametersName.PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), }, { zk_scheme: "ZKV1", name: shortint_params_name( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), block_params: new ShortintParameters( - ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64, + ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128, ), casting_params: new ShortintCompactPublicKeyEncryptionParameters( - ShortintCompactPublicKeyEncryptionParametersName.SHORTINT_PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64_ZKV1, + ShortintCompactPublicKeyEncryptionParametersName.PARAM_PKE_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128_ZKV1, ), }, ];