- BlackBox: name: Clash.Promoted.Nat.flogBaseSNat imports: - ~INCLUDENAME[0].inc includes: - name: flogBase extension: inc template: |- // floor of logBase function integer ~INCLUDENAME[0]; input integer base, value; begin for (~INCLUDENAME[0] = 0; value >= base; ~INCLUDENAME[0]=~INCLUDENAME[0]+1) value = value / base; end endfunction kind: Expression type: |- Clash.Promoted.Nat.flogBaseSNat :: (2 <= base, 1 <= x) => SNat base -- ARG[2] -> SNat x -- ARG[3] -> SNat (FLog base x template: ~INCLUDENAME[0](~LIT[2],~LIT[3]) workInfo: Never - BlackBox: name: Clash.Promoted.Nat.clogBaseSNat imports: - ~INCLUDENAME[0].inc includes: - name: clogBase extension: inc template: |- // ceiling of logBase function integer ~INCLUDENAME[0]; input integer base, value; begin for (~INCLUDENAME[0] = 0; base ** ~INCLUDENAME[0] < value; ~~INCLUDENAME[0]=~INCLUDENAME[0]+1); end endfunction kind: Expression type: |- Clash.Promoted.Nat.clogBaseSNat :: (2 <= base, 1 <= x) => SNat base -- ARG[2] -> SNat x -- ARG[3] -> SNat (CLog base x template: ~INCLUDENAME[0](~LIT[2],~LIT[3]) workInfo: Never - BlackBox: name: Clash.Promoted.Nat.logBaseSNat imports: - ~INCLUDENAME[0].inc includes: - name: clogBase extension: inc template: |- // logBaseSNat begin function integer ~INCLUDENAME[0]; input integer base, value; begin for (~INCLUDENAME[0] = 0; value >= base; ~INCLUDENAME[0]=~INCLUDENAME[0]+1) value = value / base; end endfunction kind: Expression type: |- Clash.Promoted.Nat.logBaseSNat :: (FLog base x ~ CLog base x) => SNat base -- ARG[1] -> SNat x -- ARG[2] -> SNat (Log base x) template: ~INCLUDENAME[0](~LIT[1],~LIT[2]) workInfo: Never