mirror of
https://github.com/vlang/v.git
synced 2025-08-03 09:47:15 -04:00
This commit is contained in:
parent
e5eed5c5a4
commit
d9c7387da0
@ -7239,10 +7239,10 @@ fn (mut g Gen) or_block(var_name string, or_block ast.OrExpr, return_type ast.Ty
|
||||
g.writeln('\t${styp} ${err_obj} = {0};')
|
||||
if g.fn_decl.return_type.has_flag(.result) {
|
||||
g.writeln('\t${err_obj}.is_error = true;')
|
||||
g.writeln('\t${err_obj}.err = ${cvar_name}${tmp_op}err;')
|
||||
} else if g.fn_decl.return_type.has_flag(.option) {
|
||||
g.writeln('\t${err_obj}.state = 2;')
|
||||
}
|
||||
g.writeln('\t${err_obj}.err = ${cvar_name}${tmp_op}err;')
|
||||
g.writeln('\treturn ${err_obj};')
|
||||
}
|
||||
}
|
||||
|
5
vlib/v/gen/c/testdata/struct_field_result_init.c.must_have
vendored
Normal file
5
vlib/v/gen/c/testdata/struct_field_result_init.c.must_have
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
_result_math__big__Integer _t1 = math__big__integer_from_string(_S("115792089237316195423570985008687907853269984665640564039457584007913129639747"));
|
||||
if (_t1.is_error) {
|
||||
math__big__Integer _t2 = {0};
|
||||
return _t2;
|
||||
}
|
0
vlib/v/gen/c/testdata/struct_field_result_init.out
vendored
Normal file
0
vlib/v/gen/c/testdata/struct_field_result_init.out
vendored
Normal file
32
vlib/v/gen/c/testdata/struct_field_result_init.vv
vendored
Normal file
32
vlib/v/gen/c/testdata/struct_field_result_init.vv
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
import math
|
||||
import math.big { Integer }
|
||||
import crypto.rand
|
||||
|
||||
struct SSS {
|
||||
mut:
|
||||
prime Integer = big.integer_from_string('115792089237316195423570985008687907853269984665640564039457584007913129639747')!
|
||||
}
|
||||
|
||||
// random returns a random number from the range (0, prime-1) inclusive
|
||||
fn (s SSS) random() !Integer {
|
||||
mut result := big.zero_int + s.prime
|
||||
result = result - big.one_int
|
||||
return rand.int_big(result)
|
||||
}
|
||||
|
||||
// mod_inverse computes the multiplicative inverse of the number on the field
|
||||
// prime; more specifically, number * inverse == 1; Note: number should never be
|
||||
// zero
|
||||
fn mod_inverse(number Integer) Integer {
|
||||
s := SSS{}
|
||||
copy := number % s.prime
|
||||
pcopy := s.prime
|
||||
|
||||
_, _, y := math.egcd(pcopy.int(), copy.int())
|
||||
|
||||
return (s.prime + big.integer_from_i64(y)) % s.prime
|
||||
}
|
||||
|
||||
fn main() {
|
||||
mod_inverse(big.integer_from_string('1')!)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user