Skip to content

Commit

Permalink
fix: conflicting files
Browse files Browse the repository at this point in the history
  • Loading branch information
Tomi-3-0 committed Dec 6, 2023
1 parent 57c4a37 commit 6a564b8
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 113 deletions.
82 changes: 0 additions & 82 deletions pkg/hintrunner/hint.go
Original file line number Diff line number Diff line change
Expand Up @@ -298,88 +298,6 @@ func (hint *WideMul128) Execute(vm *VM.VirtualMachine, _ *HintRunnerContext) err
return nil
}

type DivMod struct {
lhs ResOperander
rhs ResOperander
quotient CellRefer
remainder CellRefer
}

func (hint DivMod) String() string {
return "DivMod"
}
func (hint DivMod) Execute(vm *VM.VirtualMachine) error {

lhsVal, err := hint.lhs.Resolve(vm)
if err != nil {
return fmt.Errorf("resolve lhs operand %s: %v", hint.lhs, err)
}

rhsVal, err := hint.rhs.Resolve(vm)
if err != nil {
return fmt.Errorf("resolve rhs operand %s: %v", hint.rhs, err)
}

lhsFelt, err := lhsVal.FieldElement()
if err != nil {
return err
}

rhsFelt, err := rhsVal.FieldElement()
if err != nil {
return err
}
if rhsFelt.IsZero() {
return fmt.Errorf("cannot be divided by zero, rhs: %v", rhsFelt)
}

lhsvalue := uint256.Int(lhsFelt.Bits())
rhsvalue := uint256.Int(rhsFelt.Bits())

// get quotient
quo := uint256.Int{}
quo.Div(&lhsvalue, &rhsvalue)

quotient := f.Element{}
quoVal := quo.Uint64()
quotient.SetUint64(quoVal)

quotientAddr, err := hint.quotient.Get(vm)
if err != nil {
return fmt.Errorf("get quotient cell: %v", err)
}

quotientVal := mem.MemoryValueFromFieldElement(&quotient)
err = vm.Memory.WriteToAddress(&quotientAddr, &quotientVal)
if err != nil {
return fmt.Errorf("write cell: %v", err)
}

// get remainder: lhs - (rhs * quotient)
temp := uint256.Int{}
temp.Mul(&rhsvalue, &quo)

rem := uint256.Int{}
rem.Sub(&lhsvalue, &temp)

remainder := f.Element{}
remVal := rem.Uint64()
remainder.SetUint64(remVal)

remainderAddr, err := hint.remainder.Get(vm)
if err != nil {
return fmt.Errorf("get remainder cell: %v", err)
}

remainderVal := mem.MemoryValueFromFieldElement(&remainder)
err = vm.Memory.WriteToAddress(&remainderAddr, &remainderVal)
if err != nil {
return fmt.Errorf("write cell: %v", err)
}

return nil
}

type Uint256DivMod struct {
dividend0 ResOperander
dividend1 ResOperander
Expand Down
31 changes: 0 additions & 31 deletions pkg/hintrunner/hint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -268,37 +268,6 @@ func TestWideMul128(t *testing.T) {
)
}

func TestDivMod(t *testing.T) {
vm := defaultVirtualMachine()
vm.Context.Ap = 0
vm.Context.Fp = 0

var quo ApCellRef = 1
var rem ApCellRef = 2

lhsValue := Immediate(f.NewElement(19))
rhsValue := Immediate(f.NewElement(7))

hint := DivMod{
lhs: lhsValue,
rhs: rhsValue,
quotient: quo,
remainder: rem,
}

err := hint.Execute(vm)
require.NoError(t, err)

expectedQuotient := mem.MemoryValueFromInt(2)
expectedRemainder := mem.MemoryValueFromInt(5)

actualQuotient := readFrom(vm, VM.ExecutionSegment, 1)
actualRemainder := readFrom(vm, VM.ExecutionSegment, 2)

require.Equal(t, expectedQuotient, actualQuotient)
require.Equal(t, expectedRemainder, actualRemainder)
}

func TestUint256DivMod(t *testing.T) {
vm := defaultVirtualMachine()
vm.Context.Ap = 0
Expand Down

0 comments on commit 6a564b8

Please sign in to comment.