Skip to content

Conversation

@thedavidmeister
Copy link
Contributor

@thedavidmeister thedavidmeister commented Oct 21, 2025

Motivation

Solution

Checks

By submitting this for review, I'm confirming I've done the following:

  • made this PR as small as possible
  • unit-tested any new functionality
  • linked any relevant issues or PRs
  • included screenshots (if this involves a front-end change)

Summary by CodeRabbit

  • Chores
    • Updated several internal libraries/submodules to newer revisions; no user-facing API or behavior changes expected.
    • Added "foundry.lock" to REUSE.toml annotation list.
  • Tests
    • Updated gas/performance snapshot figures (test metrics only); data adjustments to reported results without functional changes.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 21, 2025

Walkthrough

Updated several git submodule pointers (lib/forge-std, lib/rain.datacontract, lib/rain.math.fixedpoint, lib/rain.string, lib/rain.sol.codegen), adjusted numeric entries in .gas-snapshot, and added foundry.lock to REUSE.toml; no source code, API, or control-flow changes were introduced.

Changes

Cohort / File(s) Summary
Submodule updates
lib/forge-std, lib/rain.datacontract, lib/rain.math.fixedpoint, lib/rain.string, lib/rain.sol.codegen
Updated submodule commit references (submodule pointers changed); no repository file content, API, or behavioral changes beyond updated commit hashes.
Gas snapshot data
.gas-snapshot
Updated performance/gas metric and runtime aggregate values across multiple test entries; data/reporting changes only, no tests or code modifications.
REUSE metadata
REUSE.toml
Added foundry.lock to the REUSE.toml annotation path list; metadata change only.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • format #26 — also updates lib/rain.math.fixedpoint submodule pointer and touches related metrics.
  • fix tests #155 — modifies .gas-snapshot metrics similar to this change.
  • new codegen #42 — updates the lib/rain.sol.codegen submodule pointer.

Suggested reviewers

  • hardyjosh

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title Check ❓ Inconclusive The pull request title "2025 10 21 audit" is vague and generic, using non-descriptive terms that fail to convey meaningful information about the changeset. The title consists of only a date followed by the word "audit" without clarifying what specific changes were made. Looking at the actual changes, the PR updates multiple submodule references (lib/forge-std, lib/rain.datacontract, lib/rain.math.fixedpoint, lib/rain.string, lib/rain.sol.codegen), modifies gas snapshot metrics, and adds an entry to REUSE.toml—none of which is apparent from the title alone. A developer scanning the commit history would not understand what this PR accomplishes. Consider revising the title to be more descriptive of the actual changes, such as "Update submodule references and gas snapshots" or "Update dependencies and gas metrics for 2025-10-21 audit". This would help reviewers and future maintainers quickly understand the purpose and scope of the changes without needing to examine the full diff.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 2025-10-21-audit

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ffa17b9 and f162c94.

📒 Files selected for processing (1)
  • REUSE.toml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: rainix (macos-latest, rainix-rs-test)
  • GitHub Check: rainix (ubuntu-latest, test-wasm-build)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-legal)
  • GitHub Check: rainix (macos-latest, rainix-sol-legal)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-static)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-static)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-test)
  • GitHub Check: git-clean
🔇 Additional comments (1)
REUSE.toml (1)

24-25: Sound REUSE compliance additions.

The additions are well-justified and consistent with the existing exclusion patterns: "foundry.lock" aligns with other generated lock files (e.g., package-lock.json, Cargo.lock), and "REUSE.toml" aligns with other configuration files (e.g., foundry.toml). Formatting and structure remain consistent.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7b63e5f and 9fcad76.

⛔ Files ignored due to path filters (2)
  • flake.lock is excluded by !**/*.lock
  • foundry.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • lib/forge-std (1 hunks)
  • lib/rain.datacontract (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: git-clean
  • GitHub Check: rainix (macos-latest, rainix-rs-test)
🔇 Additional comments (1)
lib/forge-std (1)

1-1: The review comment references an incorrect commit hash—the actual submodule is not at the stated commit.

The review comment asks to verify commit b8f065fda83b8cd94a6b2fec8fcd911dc3b444fd, which does exist on the official forge-std master branch. However, the actual submodule HEAD in this PR is 9fcad76bf17cf34ff971a24d4ac4f3cabe3d420a, which does not exist in any branch or tag of the official forge-std repository (foundry-rs/forge-std). This indicates either:

  1. The submodule is pointing to a fork not visible in the official repository, or
  2. The submodule reference is corrupted/invalid

The review comment's verification guidance is based on the wrong commit and therefore does not apply to the actual code changes.

Likely an incorrect or invalid review comment.

@@ -1 +1 @@
Subproject commit f46d8301cf732f4f83846565aa475628265e51e0
Subproject commit b8f065fda83b8cd94a6b2fec8fcd911dc3b444fd
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Provide comprehensive PR description with audit scope and rationale.

The PR description is empty with no Motivation or Solution provided. All checklist items are unchecked, indicating insufficient vetting. For a submodule dependency update, especially labeled as an "audit," you must document:

  1. What specific audit or security concern prompted this update?
  2. What changes are included in the new forge-std commit?
  3. Are there any breaking changes or API modifications?
  4. What is the scope and impact of this audit?

Please update the PR description with clear motivation and document any changes or concerns identified during the audit.

🤖 Prompt for AI Agents
In lib/forge-std around lines 1 to 1, the PR description is empty and missing
the required audit scope and rationale; update the PR description to (1) state
the specific audit or security concern that prompted the submodule update, (2)
list the exact forge-std commit(s)/diff and summarize the changes included, (3)
call out any breaking changes or API modifications and migration steps if
applicable, and (4) describe the scope and impact of the audit (affected
components, tests run, and risk assessment), and mark checklist items
accordingly so reviewers can validate the update.

@@ -1 +1 @@
Subproject commit d5d4084e67667b09e7a649e5dbcdee2dedced13e
Subproject commit 9c8d6e64208fb1788ba38cec942e9234725f134d
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

PR description is incomplete and PR checklist is unchecked.

The PR description contains only placeholder sections with no actual Motivation or Solution provided. Additionally, all items in the PR checklist are unchecked. For a submodule audit update, please:

  1. Complete the PR description explaining the motivation for the audit and what changes are included.
  2. Link any relevant audit issues or findings.
  3. Verify and check off the applicable PR checklist items (unit tests, linked issues, etc.).

This information is essential for reviewers to understand the scope and rationale of the update.

🤖 Prompt for AI Agents
In lib/rain.datacontract around lines 1 to 1, the pull request description and
checklist are incomplete; update the PR description to include a clear
Motivation (why the submodule audit was done), a concise Solution summary (what
was changed in this update), and any relevant details about scope or impact; add
links to the audit report, issue tracker entries, or findings (provide issue/PR
numbers or URLs), and verify and check off the applicable PR checklist items
(unit tests added/updated, linked issues, documentation updates, security/audit
confirmations) so reviewers have context and can validate the change.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Verify submodule commit exists and review its contents.

Submodule updates should be explicitly audited. Verify that the target commit 9c8d6e64208fb1788ba38cec942e9234725f134d is reachable and understand what changes it introduces.


🏁 Script executed:

#!/bin/bash
# Description: Verify the submodule commit and inspect its contents

cd lib/rain.datacontract 2>/dev/null || {
  echo "Submodule not initialized. Attempting to initialize..."
  git submodule update --init lib/rain.datacontract
  cd lib/rain.datacontract || exit 1
}

# Verify the commit exists
git cat-file -t 9c8d6e64208fb1788ba38cec942e9234725f134d && echo "✓ Commit exists" || echo "✗ Commit not found"

# Show the commit message and author
git log -1 --format="%H %s by %an <%ae>" 9c8d6e64208fb1788ba38cec942e9234725f134d

# Show the diff from the previous commit (to understand what changed)
git log -1 --format="%H" > /dev/null && echo "Recent commit log:" && git log --oneline -10

Length of output: 777


Submodule reference points to non-existent commit—cannot merge.

The commit hash 9c8d6e64208fb1788ba38cec942e9234725f134d in the updated submodule pointer does not exist or is unreachable in the rain.datacontract remote. The verification returned fatal: remote error: upload-pack: not our ref.

Correct the submodule reference to an existing, reachable commit on the target branch before this PR can be merged.

🤖 Prompt for AI Agents
In lib/rain.datacontract around lines 1-1 the submodule pointer references
commit 9c8d6e64208fb1788ba38cec942e9234725f134d which is not present on the
remote; update the superproject to point to a reachable commit by checking out
the submodule, fetching the remote refs, and resetting to a valid commit or
branch, then commit the updated submodule SHA in the superproject: e.g., run cd
path/to/rain.datacontract && git fetch --all && git checkout
<valid-commit-or-branch> && cd .. && git add lib/rain.datacontract && git commit
-m "Update rain.datacontract submodule to reachable commit" (or alternatively
use git submodule update --init --remote and verify with git ls-remote to
confirm the chosen SHA exists) before pushing the PR.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9fcad76 and 4d96047.

⛔ Files ignored due to path filters (1)
  • foundry.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • lib/rain.math.fixedpoint (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-static)
  • GitHub Check: git-clean
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-legal)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-static)
  • GitHub Check: rainix (macos-latest, rainix-rs-test)
  • GitHub Check: rainix (ubuntu-latest, test-wasm-build)
  • GitHub Check: rainix (macos-latest, rainix-sol-legal)
🔇 Additional comments (1)
lib/rain.math.fixedpoint (1)

1-1: Only rain.math.fixedpoint was updated; forge-std and rain.datacontract remain unchanged.

The review comment incorrectly claims the PR updates three submodules. Verification shows only lib/rain.math.fixedpoint was updated (from 21fbc5f0216229c769585e7772204011b5f3cbd6 to 9ca0634452dc201f3c51c08f926febc2b75c30d4), while lib/forge-std and lib/rain.datacontract retain their previous commits. The new commit for rain.math.fixedpoint is valid and resolvable.

Likely an incorrect or invalid review comment.

@@ -1 +1 @@
Subproject commit 21fbc5f0216229c769585e7772204011b5f3cbd6
Subproject commit 9ca0634452dc201f3c51c08f926febc2b75c30d4
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Incomplete PR description blocks merge.

The PR description contains placeholder sections (Motivation and Solution are empty) and provides no context for why these submodule updates are being made. This makes it impossible to assess the impact and purpose of the changes.

Update the PR description to include:

  • Clear motivation for updating these three submodules
  • What changes in each submodule are being incorporated
  • Whether this is part of an audit or regular dependency update
  • Any breaking changes or migration notes
🤖 Prompt for AI Agents
In lib/rain.math.fixedpoint around lines 1 to 1, the PR description contains
placeholder sections and is missing motivation and change details; update the PR
description to (1) state why these three submodules are being updated (purpose:
audit, security, feature, or routine dependency bump), (2) enumerate the
specific changes being pulled into each submodule (brief bullet-style list per
submodule: files/versions/behavioral changes), (3) indicate if this is part of
an audit or regular dependency update, and (4) list any breaking changes or
migration steps required (API changes, data migrations, or upgrade notes) so
reviewers can assess impact.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
lib/rain.math.fixedpoint (1)

1-1: [DUPLICATE] Incomplete PR description still blocks merge.

The previous review comment on this PR flagged that the PR description contains placeholder sections (Motivation and Solution are empty) and provides no context for why these submodule updates are being made. This issue remains unresolved. The PR title suggests this is related to an audit ("2025 10 21 audit"), but the description provides no details.

Before proceeding, the PR description must be updated to include:

  • Motivation: Why are these four submodules being updated now? (audit findings, security patch, feature requirement, etc.)
  • Specific changes per submodule: What functional changes, if any, are being pulled in?
  • Testing & validation: How were these updates tested? What audit checks or acceptance criteria apply?
  • Breaking changes: Are there any API changes, migration steps, or data migrations required?

Additionally, please verify:

  • All four submodule updates (forge-std, rain.datacontract, rain.math.fixedpoint, rain.string) are intentional and coordinated.
  • Each commit hash exists and is stable (not a WIP or temporary branch).
  • All related tests pass with these updated dependencies.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4d96047 and 880c157.

⛔ Files ignored due to path filters (1)
  • foundry.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • lib/rain.math.fixedpoint (1 hunks)
  • lib/rain.string (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: git-clean
  • GitHub Check: rainix (macos-latest, rainix-sol-legal)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-static)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-static)
  • GitHub Check: rainix (ubuntu-latest, test-wasm-build)
  • GitHub Check: rainix (macos-latest, rainix-rs-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-test)
🔇 Additional comments (1)
lib/rain.string (1)

1-1: Verify submodule changes and compatibility.

This PR updates lib/rain.string from commit 8a0a8fa... to 85d0074... along with three other submodules. Before merging, verify:

  1. What substantive changes are present in the new submodule commits (use git log to diff the old and new commits)?
  2. Are there any breaking API or behavioral changes that require updates in this repository?
  3. Do all existing tests pass with the updated submodules?
  4. Are the new commits on stable branches (e.g., main), not detached heads?

The AI summary claims "no functional, API, or behavioral changes observed," but this should be confirmed since submodule updates can introduce unexpected breaking changes.

@@ -1 +1 @@
Subproject commit 8a0a8fa1cfee5a809b707494524db02cdbc090b5
Subproject commit 85d0074c8cd1fdca3285366c15bc9b44b84ad5e9
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fill in the PR description with motivation and solution details.

The PR description contains only placeholder sections with no content explaining why these submodule updates are needed. This makes it impossible to assess the scope and impact of the changes.

For a coordinated update of four git submodules (forge-std, rain.datacontract, rain.math.fixedpoint, and rain.string), provide:

  • Motivation: Why were these updates needed? (audit findings, security fixes, breaking changes upstream, etc.)
  • Solution: What changed in each submodule and how they relate to this PR's audit objective?

Also ensure all checklist items are verified before merge.

🤖 Prompt for AI Agents
In lib/rain.string around lines 1 to 1, the PR description is empty placeholder
text; update the PR body to include motivation and solution details for the
coordinated submodule updates. Add a "Motivation" section explaining why the
updates were required (e.g., audit findings, security fixes, breaking changes
upstream) and a "Solution" section listing each submodule (forge-std,
rain.datacontract, rain.math.fixedpoint, rain.string) with a concise summary of
what changed in that submodule and how it addresses the motivation and ties into
the audit objective; lastly, verify and document completion of the PR checklist
items (tests, CI green, changelog, compatibility notes) before merging.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 880c157 and ffa17b9.

⛔ Files ignored due to path filters (1)
  • foundry.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • .gas-snapshot (1 hunks)
  • lib/rain.sol.codegen (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-21T18:03:40.347Z
Learnt from: thedavidmeister
PR: rainlanguage/rain.math.float#107
File: test/lib/LibDecimalFloatSlow.sol:37-45
Timestamp: 2025-08-21T18:03:40.347Z
Learning: In test/lib/LibDecimalFloatSlow.sol, the "slow" implementation is intentionally different from the production implementation to serve as an independent reference for fuzzing tests. The goal is to have two different approaches (expensive loops vs optimized jumps) that produce equivalent results, not identical implementations.

Applied to files:

  • .gas-snapshot
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-legal)
  • GitHub Check: rainix (macos-latest, rainix-rs-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-static)
  • GitHub Check: rainix (ubuntu-latest, test-wasm-build)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-static)
  • GitHub Check: rainix (macos-latest, rainix-sol-legal)
  • GitHub Check: rainix (ubuntu-latest, rainix-sol-test)
  • GitHub Check: rainix (ubuntu-latest, rainix-rs-test)
  • GitHub Check: git-clean
🔇 Additional comments (3)
lib/rain.sol.codegen (1)

1-1: Verify the purpose and impact of submodule updates across the project.

This PR updates multiple submodule pointers (lib/forge-std, lib/rain.datacontract, lib/rain.math.fixedpoint, lib/rain.string, lib/rain.sol.codegen) and adjusts .gas-snapshot entries. Without context on what audit these serve, it's unclear whether these updates address security issues, bug fixes, performance improvements, or routine maintenance.

Please clarify:

  1. What is the scope and purpose of this audit?
  2. Does any submodule commit address known security vulnerabilities or critical bugs?
  3. Are the .gas-snapshot changes expected as a result of the submodule updates?
  4. Have you verified that updated commits in each submodule are stable/released versions (not work-in-progress branches)?

Consider linking to any audit reports, security advisories, or related issues that justify these changes.

.gas-snapshot (2)

1-345: Now let me run a script to check if there are actual submodule changes in this PR:

The review comment addresses an unrelated file — .gas-snapshot is a Foundry test output, not a submodule configuration.

The .gas-snapshot file is generated by Foundry's forge snapshot command and contains test function gas usage data, not dependency or submodule configuration. The code snippet provided (lines 1–345) shows only gas benchmark results for DecimalFloat and LibDecimalFloat test functions, which is entirely unrelated to submodule pointer changes.

The review comment requests verification of submodule bumps and provides a script to display submodule SHAs, but this file is not a submodule-related change. If there are actual submodule pointer updates in this PR, they would be in different files (such as .gitmodules or as entries in git diff output showing "Subproject commit" changes).

Recommendation: Verify whether submodule changes exist in other files of this PR before requesting their audit. If submodules have indeed been updated, apply the submodule verification review to the correct files showing those changes.

Likely an incorrect or invalid review comment.


1-345: No gas regressions detected.

The verification found no metrics with >5% increases in gas costs or mean execution time (μ). The run count variations across 16 tests are within expected bounds for fuzz tests. The .gas-snapshot file is properly updated with current test measurements, and all changes are acceptable.

Comment on lines 1 to 345
DecimalFloatAbsTest:testAbsDeployed(bytes32) (runs: 5096, μ: 3675859, ~: 3675798)
DecimalFloatAddTest:testAddDeployed(bytes32,bytes32) (runs: 5096, μ: 3681285, ~: 3681358)
DecimalFloatCeilTest:testCeilDeployed(bytes32) (runs: 5096, μ: 3675776, ~: 3675374)
DecimalFloatConstantsTest:testEDeployed() (gas: 3674948)
DecimalFloatConstantsTest:testMaxNegativeValueDeployed() (gas: 3674938)
DecimalFloatConstantsTest:testMaxPositiveValueDeployed() (gas: 3674939)
DecimalFloatConstantsTest:testMinNegativeValueDeployed() (gas: 3674914)
DecimalFloatConstantsTest:testMinPositiveValueDeployed() (gas: 3674937)
DecimalFloatConstantsTest:testZeroDeployed() (gas: 3674959)
DecimalFloatDivTest:testDivDeployed(bytes32,bytes32) (runs: 5096, μ: 3683146, ~: 3683046)
DecimalFloatEqTest:testEqDeployed(bytes32,bytes32) (runs: 5096, μ: 3676157, ~: 3676080)
DecimalFloatFloorTest:testFloorDeployed(bytes32) (runs: 5096, μ: 3675611, ~: 3675417)
DecimalFloatFormatTest:testFormatConstants() (gas: 3675540)
DecimalFloatFormatTest:testFormatDeployed(bytes32,bytes32,bytes32) (runs: 2585, μ: 3704853, ~: 3710797)
DecimalFloatFracTest:testFracDeployed(bytes32) (runs: 5096, μ: 3675980, ~: 3675944)
DecimalFloatFromFixedDecimalLosslessTest:testFromFixedDecimalLosslessDeployed(uint256,uint8) (runs: 5096, μ: 3676890, ~: 3676512)
DecimalFloatFromFixedDecimalLossyTest:testFromFixedDecimalLossyDeployed(uint256,uint8) (runs: 5096, μ: 3676737, ~: 3676663)
DecimalFloatGtTest:testGtDeployed(bytes32,bytes32) (runs: 5096, μ: 3676053, ~: 3675977)
DecimalFloatGteTest:testGteDeployed(bytes32,bytes32) (runs: 5096, μ: 3676126, ~: 3676050)
DecimalFloatInvTest:testInvDeployed(bytes32) (runs: 5096, μ: 3681291, ~: 3681332)
DecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 3675287, ~: 3675287)
DecimalFloatLtTest:testLtDeployed(bytes32,bytes32) (runs: 5096, μ: 3676030, ~: 3675954)
DecimalFloatLteTest:testLteDeployed(bytes32,bytes32) (runs: 5096, μ: 3676084, ~: 3676007)
DecimalFloatMaxTest:testMaxDeployed(bytes32,bytes32) (runs: 5096, μ: 3676130, ~: 3676067)
DecimalFloatMinTest:testMinDeployed(bytes32,bytes32) (runs: 5096, μ: 3676106, ~: 3676043)
DecimalFloatMinusTest:testMinusDeployed(bytes32) (runs: 5096, μ: 3675901, ~: 3675902)
DecimalFloatMulTest:testMulDeployed(bytes32,bytes32) (runs: 5096, μ: 3680110, ~: 3680678)
DecimalFloatPackLosslessTest:testPackDeployed(int224,int32) (runs: 5096, μ: 167213, ~: 167214)
DecimalFloatParseTest:testParseDeployed(string) (runs: 5096, μ: 3678233, ~: 3678101)
DecimalFloatPowTest:testPowDeployed(bytes32,bytes32) (runs: 5096, μ: 3728393, ~: 3705268)
DecimalFloatSqrtTest:testSqrtDeployed(bytes32) (runs: 5096, μ: 3693905, ~: 3693958)
DecimalFloatSubTest:testSubDeployed(bytes32,bytes32) (runs: 5096, μ: 3681612, ~: 3681687)
DecimalFloatToFixedDecimalLosslessTest:testToFixedDecimalLosslessDeployed(bytes32,uint8) (runs: 5096, μ: 3679685, ~: 3679400)
DecimalFloatToFixedDecimalLossyTest:testToFixedDecimalLossyDeployed(bytes32,uint8) (runs: 5096, μ: 3679209, ~: 3678972)
LibDecimalFloatAbsTest:testAbsMinValue(int32) (runs: 5039, μ: 4497, ~: 4497)
LibDecimalFloatAbsTest:testAbsNegative(int256,int32) (runs: 5096, μ: 9868, ~: 10086)
LibDecimalFloatAbsTest:testAbsNonNegative(int256,int32) (runs: 5096, μ: 9031, ~: 8651)
LibDecimalFloatCeilTest:testCeilExamples() (gas: 35053)
LibDecimalFloatCeilTest:testCeilInRange(int224,int256) (runs: 5096, μ: 11142, ~: 10763)
LibDecimalFloatCeilTest:testCeilLessThanMin(int224,int256) (runs: 5096, μ: 10081, ~: 9840)
LibDecimalFloatCeilTest:testCeilNonNegative(int224,int256) (runs: 5096, μ: 8988, ~: 9237)
LibDecimalFloatCeilTest:testCeilNotReverts(bytes32) (runs: 5096, μ: 616, ~: 411)
LibDecimalFloatCeilTest:testCeilZero(int32) (runs: 5096, μ: 5428, ~: 5428)
LibDecimalFloatConstantsTest:testFloatE() (gas: 3383)
LibDecimalFloatConstantsTest:testFloatHalf() (gas: 3362)
LibDecimalFloatConstantsTest:testFloatMaxNegativeValue() (gas: 3405)
LibDecimalFloatConstantsTest:testFloatMaxNegativeValueIsMax(bytes32) (runs: 5074, μ: 4503, ~: 4620)
LibDecimalFloatConstantsTest:testFloatMaxPositiveValue() (gas: 3361)
LibDecimalFloatConstantsTest:testFloatMaxPositiveValueIsMax(bytes32) (runs: 5096, μ: 3544, ~: 3586)
LibDecimalFloatConstantsTest:testFloatMinNegativeValue() (gas: 3361)
LibDecimalFloatConstantsTest:testFloatMinNegativeValueIsMin(bytes32) (runs: 5096, μ: 3497, ~: 3457)
LibDecimalFloatConstantsTest:testFloatMinPositiveValue() (gas: 3383)
LibDecimalFloatConstantsTest:testFloatMinPositiveValueIsMin(bytes32) (runs: 5071, μ: 4966, ~: 4896)
LibDecimalFloatConstantsTest:testFloatOne() (gas: 3384)
LibDecimalFloatConstantsTest:testFloatTwo() (gas: 3406)
LibDecimalFloatConstantsTest:testFloatZero() (gas: 3332)
LibDecimalFloatDecimalAddTest:testAddPacked(bytes32,bytes32) (runs: 5096, μ: 11224, ~: 11338)
LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessFail(uint256,uint8) (runs: 4585, μ: 9617, ~: 9663)
LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessMem(uint256,uint8) (runs: 5096, μ: 8181, ~: 8104)
LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessPass(uint256,uint8) (runs: 5096, μ: 8226, ~: 8200)
LibDecimalFloatCeilTest:testCeilLessThanMin(int224,int256) (runs: 5096, μ: 10082, ~: 9840)
LibDecimalFloatCeilTest:testCeilNonNegative(int224,int256) (runs: 5096, μ: 8989, ~: 9237)
LibDecimalFloatCeilTest:testCeilNotReverts(bytes32) (runs: 5096, μ: 617, ~: 411)
LibDecimalFloatCeilTest:testCeilZero(int32) (runs: 5096, μ: 1939, ~: 1939)
LibDecimalFloatConstantsTest:testFloatE() (gas: 540)
LibDecimalFloatConstantsTest:testFloatHalf() (gas: 519)
LibDecimalFloatConstantsTest:testFloatMaxNegativeValue() (gas: 562)
LibDecimalFloatConstantsTest:testFloatMaxNegativeValueIsMax(bytes32) (runs: 5074, μ: 4181, ~: 4298)
LibDecimalFloatConstantsTest:testFloatMaxPositiveValue() (gas: 518)
LibDecimalFloatConstantsTest:testFloatMaxPositiveValueIsMax(bytes32) (runs: 5096, μ: 713, ~: 755)
LibDecimalFloatConstantsTest:testFloatMinNegativeValue() (gas: 518)
LibDecimalFloatConstantsTest:testFloatMinNegativeValueIsMin(bytes32) (runs: 5096, μ: 666, ~: 626)
LibDecimalFloatConstantsTest:testFloatMinPositiveValue() (gas: 540)
LibDecimalFloatConstantsTest:testFloatMinPositiveValueIsMin(bytes32) (runs: 5071, μ: 4644, ~: 4574)
LibDecimalFloatConstantsTest:testFloatOne() (gas: 541)
LibDecimalFloatConstantsTest:testFloatTwo() (gas: 563)
LibDecimalFloatConstantsTest:testFloatZero() (gas: 489)
LibDecimalFloatDecimalAddTest:testAddPacked(bytes32,bytes32) (runs: 5096, μ: 8071, ~: 8176)
LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessFail(uint256,uint8) (runs: 4581, μ: 9616, ~: 9663)
LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessMem(uint256,uint8) (runs: 5096, μ: 4989, ~: 4912)
LibDecimalFloatDecimalLosslessTest:testFromFixedDecimalLosslessPass(uint256,uint8) (runs: 5096, μ: 4383, ~: 4356)
LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessFail() (gas: 4894)
LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPacked(bytes32,uint8) (runs: 5096, μ: 6672, ~: 6161)
LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPass(int256,int256,uint8) (runs: 5096, μ: 15793, ~: 15768)
LibDecimalFloatDecimalTest:testFixedDecimalRoundTripLossless(uint256,uint8) (runs: 5096, μ: 9102, ~: 9031)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyComplicated() (gas: 685958)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyMax() (gas: 673463)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOne() (gas: 686002)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOneMillion() (gas: 685937)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOverflow() (gas: 715261)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyPacked(uint256,uint8) (runs: 5096, μ: 9530, ~: 9452)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateOne(uint256,uint8) (runs: 5096, μ: 5971, ~: 5937)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateZero(uint256,uint8) (runs: 5096, μ: 6037, ~: 5860)
LibDecimalFloatDecimalTest:testToFixedDecimalLosslessScaleUp(int256,int256,uint8) (runs: 2628, μ: 15964, ~: 15794)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyExponentOverflow(int256,int256,uint8) (runs: 5096, μ: 14958, ~: 14729)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyIdentity(int256,uint8) (runs: 5096, μ: 10163, ~: 9957)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyNegative(int256,int256,uint8) (runs: 5096, μ: 10825, ~: 11076)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyPacked(bytes32,uint8) (runs: 5096, μ: 6773, ~: 6905)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyScaleUpOverflow(int256,int256,uint8) (runs: 2478, μ: 15343, ~: 15612)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncate(int256,int256,uint8) (runs: 5096, μ: 14484, ~: 14210)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncateLossless() (gas: 14500)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyUnderflow(int256,int256,uint8) (runs: 5096, μ: 13740, ~: 13602)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyZero(int256,uint8) (runs: 5096, μ: 4575, ~: 4575)
LibDecimalFloatDivTest:testDivByNegativeOneFloat(int224,int32) (runs: 5096, μ: 363066, ~: 359444)
LibDecimalFloatDivTest:testDivByOneFloat(int224,int32) (runs: 5096, μ: 339115, ~: 337119)
LibDecimalFloatDivTest:testDivPacked(bytes32,bytes32) (runs: 5096, μ: 12730, ~: 12880)
LibDecimalFloatEqTest:testEqPacked(bytes32,bytes32) (runs: 5096, μ: 5526, ~: 5450)
LibDecimalFloatEqTest:testEqXNotYExponents(bytes32,bytes32) (runs: 5096, μ: 4344, ~: 4234)
LibDecimalFloatEqTest:testEqZero(int32) (runs: 5096, μ: 5123, ~: 5123)
LibDecimalFloatFloorTest:testFloorExamples() (gas: 39140)
LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPacked(bytes32,uint8) (runs: 5096, μ: 6306, ~: 6161)
LibDecimalFloatDecimalLosslessTest:testToFixedDecimalLosslessPass(int256,int256,uint8) (runs: 5096, μ: 14483, ~: 14456)
LibDecimalFloatDecimalTest:testFixedDecimalRoundTripLossless(uint256,uint8) (runs: 5096, μ: 4636, ~: 4565)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyComplicated() (gas: 186154)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyMax() (gas: 173659)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOne() (gas: 186198)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOneMillion() (gas: 186133)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyOverflow() (gas: 215457)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyPacked(uint256,uint8) (runs: 5096, μ: 5064, ~: 4986)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateOne(uint256,uint8) (runs: 5096, μ: 1505, ~: 1469)
LibDecimalFloatDecimalTest:testFromFixedDecimalLossyTruncateZero(uint256,uint8) (runs: 5096, μ: 1575, ~: 1392)
LibDecimalFloatDecimalTest:testToFixedDecimalLosslessScaleUp(int256,int256,uint8) (runs: 2627, μ: 14668, ~: 14546)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyExponentOverflow(int256,int256,uint8) (runs: 5096, μ: 14961, ~: 14729)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyIdentity(int256,uint8) (runs: 5096, μ: 8850, ~: 8642)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyNegative(int256,int256,uint8) (runs: 5096, μ: 10823, ~: 11076)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyPacked(bytes32,uint8) (runs: 5096, μ: 5685, ~: 5689)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyScaleUpOverflow(int256,int256,uint8) (runs: 2484, μ: 15349, ~: 15612)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncate(int256,int256,uint8) (runs: 5096, μ: 13172, ~: 12894)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyTruncateLossless() (gas: 4181)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyUnderflow(int256,int256,uint8) (runs: 5096, μ: 12427, ~: 12286)
LibDecimalFloatDecimalTest:testToFixedDecimalLossyZero(int256,uint8) (runs: 5096, μ: 757, ~: 757)
LibDecimalFloatDivTest:testDivByNegativeOneFloat(int224,int32) (runs: 5096, μ: 341822, ~: 338189)
LibDecimalFloatDivTest:testDivByOneFloat(int224,int32) (runs: 5096, μ: 317864, ~: 315864)
LibDecimalFloatDivTest:testDivPacked(bytes32,bytes32) (runs: 5096, μ: 9821, ~: 9750)
LibDecimalFloatEqTest:testEqPacked(bytes32,bytes32) (runs: 5096, μ: 2699, ~: 2624)
LibDecimalFloatEqTest:testEqXNotYExponents(bytes32,bytes32) (runs: 5096, μ: 1505, ~: 1396)
LibDecimalFloatEqTest:testEqZero(int32) (runs: 5096, μ: 1624, ~: 1624)
LibDecimalFloatFloorTest:testFloorExamples() (gas: 21402)
LibDecimalFloatFloorTest:testFloorGas0() (gas: 1003)
LibDecimalFloatFloorTest:testFloorGasTiny() (gas: 902)
LibDecimalFloatFloorTest:testFloorGasZero() (gas: 548)
LibDecimalFloatFloorTest:testFloorInRange(int224,int256) (runs: 5096, μ: 11105, ~: 11130)
LibDecimalFloatFloorTest:testFloorLessThanMin(int224,int256) (runs: 5096, μ: 10304, ~: 10314)
LibDecimalFloatFloorTest:testFloorNonNegative(int224,int256) (runs: 5096, μ: 9596, ~: 9851)
LibDecimalFloatFloorTest:testFloorInRange(int224,int256) (runs: 5096, μ: 10437, ~: 10462)
LibDecimalFloatFloorTest:testFloorLessThanMin(int224,int256) (runs: 5096, μ: 9636, ~: 9646)
LibDecimalFloatFloorTest:testFloorNonNegative(int224,int256) (runs: 5096, μ: 8928, ~: 9183)
LibDecimalFloatFloorTest:testFloorNotReverts(bytes32) (runs: 5096, μ: 464, ~: 365)
LibDecimalFloatFracTest:testFracExamples() (gas: 64760)
LibDecimalFloatFracTest:testFracExamples() (gas: 37092)
LibDecimalFloatFracTest:testFracGas0() (gas: 1003)
LibDecimalFloatFracTest:testFracGasTiny() (gas: 888)
LibDecimalFloatFracTest:testFracGasZero() (gas: 810)
LibDecimalFloatFracTest:testFracInRange(int224,int256) (runs: 5096, μ: 10923, ~: 10934)
LibDecimalFloatFracTest:testFracLessThanMin(int224,int256) (runs: 5096, μ: 10340, ~: 10351)
LibDecimalFloatFracTest:testFracNonNegative(int224,int256) (runs: 5096, μ: 9833, ~: 10087)
LibDecimalFloatFracTest:testFracInRange(int224,int256) (runs: 5096, μ: 10255, ~: 10266)
LibDecimalFloatFracTest:testFracLessThanMin(int224,int256) (runs: 5096, μ: 9672, ~: 9683)
LibDecimalFloatFracTest:testFracNonNegative(int224,int256) (runs: 5096, μ: 9166, ~: 9419)
LibDecimalFloatFracTest:testFracNotReverts(bytes32) (runs: 5096, μ: 637, ~: 616)
LibDecimalFloatGtTest:testGtGasAZero() (gas: 994)
LibDecimalFloatGtTest:testGtGasBZero() (gas: 994)
LibDecimalFloatGtTest:testGtGasBothZero() (gas: 746)
LibDecimalFloatGtTest:testGtGasDifferentSigns() (gas: 1026)
LibDecimalFloatGtTest:testGtGasExponentDiffOverflow() (gas: 1195)
LibDecimalFloatGtTest:testGtOneEAny(bytes32) (runs: 5096, μ: 3494, ~: 3494)
LibDecimalFloatGtTest:testGtReference(int224,int32,int224,int32) (runs: 5096, μ: 8166, ~: 6585)
LibDecimalFloatGtTest:testGtX(int224,int32) (runs: 5096, μ: 3907, ~: 3908)
LibDecimalFloatGtTest:testGtXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 10640, ~: 10384)
LibDecimalFloatGtTest:testGtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 11200, ~: 11401)
LibDecimalFloatGtTest:testGtXNotY(bytes32,bytes32) (runs: 5096, μ: 4343, ~: 4232)
LibDecimalFloatGtTest:testGtXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 13810, ~: 13647)
LibDecimalFloatGtTest:testGtXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 10290, ~: 10047)
LibDecimalFloatGtTest:testGtZero(int32,int32) (runs: 5096, μ: 4783, ~: 4783)
LibDecimalFloatGtTest:testGtOneEAny(bytes32) (runs: 5096, μ: 663, ~: 663)
LibDecimalFloatGtTest:testGtReference(int224,int32,int224,int32) (runs: 5096, μ: 5324, ~: 3735)
LibDecimalFloatGtTest:testGtX(int224,int32) (runs: 5096, μ: 1076, ~: 1077)
LibDecimalFloatGtTest:testGtXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9970, ~: 9715)
LibDecimalFloatGtTest:testGtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10532, ~: 10733)
LibDecimalFloatGtTest:testGtXNotY(bytes32,bytes32) (runs: 5096, μ: 1506, ~: 1395)
LibDecimalFloatGtTest:testGtXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 13138, ~: 12975)
LibDecimalFloatGtTest:testGtXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9629, ~: 9387)
LibDecimalFloatGtTest:testGtZero(int32,int32) (runs: 5096, μ: 1630, ~: 1630)
LibDecimalFloatGteTest:testGteGasAZero() (gas: 997)
LibDecimalFloatGteTest:testGteGasBZero() (gas: 1041)
LibDecimalFloatGteTest:testGteGasBothZero() (gas: 748)
LibDecimalFloatGteTest:testGteGasDifferentSigns() (gas: 1048)
LibDecimalFloatGteTest:testGteGasExponentDiffOverflow() (gas: 1154)
LibDecimalFloatGteTest:testGteOneEAny(bytes32) (runs: 5096, μ: 3494, ~: 3494)
LibDecimalFloatGteTest:testGteReference(int224,int32,int224,int32) (runs: 5096, μ: 8209, ~: 6618)
LibDecimalFloatGteTest:testGteX(int224,int32) (runs: 5096, μ: 3950, ~: 3951)
LibDecimalFloatGteTest:testGteXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 10671, ~: 10416)
LibDecimalFloatGteTest:testGteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 11211, ~: 11413)
LibDecimalFloatGteTest:testGteXNotLtY(bytes32,bytes32) (runs: 5096, μ: 3950, ~: 3873)
LibDecimalFloatGteTest:testGteXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 13838, ~: 13675)
LibDecimalFloatGteTest:testGteXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9570, ~: 9191)
LibDecimalFloatGteTest:testGteZero(int32,int32) (runs: 5096, μ: 4828, ~: 4828)
LibDecimalFloatImplementationAddTest:testAdd123456789987654321() (gas: 5327)
LibDecimalFloatImplementationAddTest:testAdd123456789e9987654321() (gas: 5377)
LibDecimalFloatGteTest:testGteOneEAny(bytes32) (runs: 5096, μ: 663, ~: 663)
LibDecimalFloatGteTest:testGteReference(int224,int32,int224,int32) (runs: 5096, μ: 5373, ~: 3781)
LibDecimalFloatGteTest:testGteX(int224,int32) (runs: 5096, μ: 1119, ~: 1120)
LibDecimalFloatGteTest:testGteXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 10001, ~: 9747)
LibDecimalFloatGteTest:testGteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10545, ~: 10745)
LibDecimalFloatGteTest:testGteXNotLtY(bytes32,bytes32) (runs: 5096, μ: 1112, ~: 1036)
LibDecimalFloatGteTest:testGteXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 13165, ~: 13003)
LibDecimalFloatGteTest:testGteXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9231, ~: 8857)
LibDecimalFloatGteTest:testGteZero(int32,int32) (runs: 5096, μ: 1675, ~: 1675)
LibDecimalFloatImplementationAddTest:testAdd123456789987654321() (gas: 2153)
LibDecimalFloatImplementationAddTest:testAdd123456789e9987654321() (gas: 2203)
LibDecimalFloatImplementationAddTest:testAddNeverRevert(int256,int256,int256,int256) (runs: 5096, μ: 13740, ~: 13711)
LibDecimalFloatImplementationAddTest:testAddOneOneNotMaximized() (gas: 6950)
LibDecimalFloatImplementationAddTest:testAddOneOnePreMaximized() (gas: 4496)
LibDecimalFloatImplementationAddTest:testAddOneZero() (gas: 3644)
LibDecimalFloatImplementationAddTest:testAddOneOneNotMaximized() (gas: 3132)
LibDecimalFloatImplementationAddTest:testAddOneOnePreMaximized() (gas: 1322)
LibDecimalFloatImplementationAddTest:testAddOneZero() (gas: 470)
LibDecimalFloatImplementationAddTest:testAddRevertMaxA() (gas: 6316)
LibDecimalFloatImplementationAddTest:testAddSameExponent(int256,int256) (runs: 4332, μ: 7682, ~: 7811)
LibDecimalFloatImplementationAddTest:testAddZero() (gas: 3665)
LibDecimalFloatImplementationAddTest:testAddZeroAnyExponent(int128) (runs: 5096, μ: 9293, ~: 9271)
LibDecimalFloatImplementationAddTest:testAddZeroOne() (gas: 3664)
LibDecimalFloatImplementationAddTest:testAddZeroToAnyNonZero(int256,int256,int256) (runs: 5046, μ: 14050, ~: 14015)
LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeExamples() (gas: 107395)
LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeFuzz(int256,int256,int256,int256) (runs: 2462, μ: 18263, ~: 18319)
LibDecimalFloatImplementationAddTest:testAddSameExponent(int256,int256) (runs: 4332, μ: 6364, ~: 6493)
LibDecimalFloatImplementationAddTest:testAddZero() (gas: 491)
LibDecimalFloatImplementationAddTest:testAddZeroAnyExponent(int128) (runs: 5096, μ: 8625, ~: 8602)
LibDecimalFloatImplementationAddTest:testAddZeroOne() (gas: 490)
LibDecimalFloatImplementationAddTest:testAddZeroToAnyNonZero(int256,int256,int256) (runs: 5046, μ: 12723, ~: 12688)
LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeExamples() (gas: 63274)
LibDecimalFloatImplementationAddTest:testAddingSmallToLargeReturnsLargeFuzz(int256,int256,int256,int256) (runs: 2462, μ: 17598, ~: 17654)
LibDecimalFloatImplementationAddTest:testGasAddOne() (gas: 1861)
LibDecimalFloatImplementationAddTest:testGasAddZero() (gas: 382)
LibDecimalFloatImplementationAddTest:testOverflowChecks(int256,int256) (runs: 5096, μ: 3878, ~: 3865)
LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaExamples() (gas: 31315)
LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNegExponentLarge(int256,int256) (runs: 5096, μ: 10534, ~: 10762)
LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNegExponentSmall(int256) (runs: 5096, μ: 203163, ~: 203163)
LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNonNegExponent(int256,int256) (runs: 5096, μ: 9903, ~: 9695)
LibDecimalFloatImplementationDivTest:testDiv1Over3() (gas: 7679)
LibDecimalFloatImplementationAddTest:testOverflowChecks(int256,int256) (runs: 5096, μ: 710, ~: 697)
LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaExamples() (gas: 7996)
LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNegExponentLarge(int256,int256) (runs: 5096, μ: 9217, ~: 9446)
LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNegExponentSmall(int256) (runs: 5096, μ: 101838, ~: 101838)
LibDecimalFloatImplementationCharacteristicMantissaTest:testCharacteristicMantissaNonNegExponent(int256,int256) (runs: 5096, μ: 8588, ~: 8380)
LibDecimalFloatImplementationDivTest:testDiv1Over3() (gas: 3861)
LibDecimalFloatImplementationDivTest:testDiv1Over3Gas0() (gas: 2566)
LibDecimalFloatImplementationDivTest:testDiv1Over3Gas10() (gas: 21216)
LibDecimalFloatImplementationDivTest:testDiv1Over9Over1Over3() (gas: 16036)
LibDecimalFloatImplementationDivTest:testDiv1e18Over3() (gas: 7233)
LibDecimalFloatImplementationDivTest:testDivBy1(int256,int256) (runs: 5096, μ: 367142, ~: 371759)
LibDecimalFloatImplementationDivTest:testDivByNegativeOneFloat(int256,int256) (runs: 5096, μ: 371411, ~: 378366)
LibDecimalFloatImplementationDivTest:testDiv1Over9Over1Over3() (gas: 10876)
LibDecimalFloatImplementationDivTest:testDiv1e18Over3() (gas: 3415)
LibDecimalFloatImplementationDivTest:testDivBy1(int256,int256) (runs: 5096, μ: 267007, ~: 271637)
LibDecimalFloatImplementationDivTest:testDivByNegativeOneFloat(int256,int256) (runs: 5096, μ: 271275, ~: 278244)
LibDecimalFloatImplementationDivTest:testDivMaxPositiveValueDenominatorNotRevert(int256,int256) (runs: 5096, μ: 2606, ~: 2645)
LibDecimalFloatImplementationDivTest:testDivNegative1Over3() (gas: 7832)
LibDecimalFloatImplementationDivTest:testDivOOMs5and2() (gas: 6676)
LibDecimalFloatImplementationDivTest:testDivOOMsOverTen() (gas: 7614)
LibDecimalFloatImplementationDivTest:testDivTenOverOOMs() (gas: 7573)
LibDecimalFloatImplementationDivTest:testDivZero(int256,int256) (runs: 5096, μ: 9939, ~: 9948)
LibDecimalFloatImplementationDivTest:testUnnormalizedThreesDiv0(int256,int256) (runs: 100, μ: 29906250, ~: 29825292)
LibDecimalFloatImplementationDivTest:testDivNegative1Over3() (gas: 4014)
LibDecimalFloatImplementationDivTest:testDivOOMs5and2() (gas: 2858)
LibDecimalFloatImplementationDivTest:testDivOOMsOverTen() (gas: 3796)
LibDecimalFloatImplementationDivTest:testDivTenOverOOMs() (gas: 3755)
LibDecimalFloatImplementationDivTest:testDivZero(int256,int256) (runs: 5096, μ: 9938, ~: 9948)
LibDecimalFloatImplementationDivTest:testUnnormalizedThreesDiv0(int256,int256) (runs: 100, μ: 22201866, ~: 22117113)
LibDecimalFloatImplementationEqTest:testEqGasAZero() (gas: 430)
LibDecimalFloatImplementationEqTest:testEqGasBZero() (gas: 473)
LibDecimalFloatImplementationEqTest:testEqGasBothZero() (gas: 450)
LibDecimalFloatImplementationEqTest:testEqGasDifferentSigns() (gas: 482)
LibDecimalFloatImplementationEqTest:testEqGasExponentDiffOverflow() (gas: 533)
LibDecimalFloatImplementationEqTest:testEqNotReverts(int256,int256,int256,int256) (runs: 5096, μ: 654, ~: 679)
LibDecimalFloatImplementationEqTest:testEqOneEAny(int256,int256) (runs: 5096, μ: 3416, ~: 3416)
LibDecimalFloatImplementationEqTest:testEqReference(int256,int256,int256,int256) (runs: 5096, μ: 9885, ~: 11361)
LibDecimalFloatImplementationEqTest:testEqX(int256) (runs: 5096, μ: 3392, ~: 3392)
LibDecimalFloatImplementationEqTest:testEqXEAnyVsXEAny(int256,int256,int256) (runs: 5048, μ: 4717, ~: 4714)
LibDecimalFloatImplementationEqTest:testEqXEqY(int256,int256,int256,int256) (runs: 5096, μ: 729, ~: 753)
LibDecimalFloatImplementationEqTest:testEqXNotY(int256,int256,int256,int256) (runs: 5094, μ: 3928, ~: 3953)
LibDecimalFloatImplementationEqTest:testEqZero(int256,int256) (runs: 5096, μ: 3440, ~: 3440)
LibDecimalFloatImplementationEqTest:testEqOneEAny(int256,int256) (runs: 5096, μ: 585, ~: 585)
LibDecimalFloatImplementationEqTest:testEqReference(int256,int256,int256,int256) (runs: 5096, μ: 7036, ~: 8512)
LibDecimalFloatImplementationEqTest:testEqX(int256) (runs: 5096, μ: 561, ~: 561)
LibDecimalFloatImplementationEqTest:testEqXEAnyVsXEAny(int256,int256,int256) (runs: 5048, μ: 4040, ~: 4037)
LibDecimalFloatImplementationEqTest:testEqXEqY(int256,int256,int256,int256) (runs: 5096, μ: 728, ~: 753)
LibDecimalFloatImplementationEqTest:testEqXNotY(int256,int256,int256,int256) (runs: 5094, μ: 3606, ~: 3631)
LibDecimalFloatImplementationEqTest:testEqZero(int256,int256) (runs: 5096, μ: 609, ~: 609)
LibDecimalFloatImplementationInvTest:testInv0() (gas: 4452)
LibDecimalFloatImplementationInvTest:testInvGas0() (gas: 2248)
LibDecimalFloatImplementationInvTest:testInvReference(int256,int256) (runs: 5046, μ: 15312, ~: 15362)
LibDecimalFloatImplementationInvTest:testInvReference(int256,int256) (runs: 5046, μ: 13995, ~: 14047)
LibDecimalFloatImplementationInvTest:testInvSlowGas0() (gas: 2560)
LibDecimalFloatImplementationLog10Test:testExactLogs() (gas: 1262946)
LibDecimalFloatImplementationLog10Test:testExactLookupsLog10() (gas: 1310385)
LibDecimalFloatImplementationLog10Test:testInterpolatedLookups() (gas: 1257613)
LibDecimalFloatImplementationLog10Test:testLog10One() (gas: 1491086)
LibDecimalFloatImplementationLog10Test:testSub1() (gas: 1259292)
LibDecimalFloatImplementationLookupLogTableValTest:testLookupLogTableVal() (gas: 1371314)
LibDecimalFloatImplementationMaximizeTest:testMaximizedEverything(int256,int256) (runs: 5096, μ: 9797, ~: 9799)
LibDecimalFloatImplementationMaximizeTest:testMaximizedExamples() (gas: 192873)
LibDecimalFloatImplementationMaximizeTest:testMaximizedIdempotent(int256,int256) (runs: 5096, μ: 10342, ~: 10306)
LibDecimalFloatImplementationMaximizeTest:testMaximizedReference(int256,int256) (runs: 5096, μ: 13638, ~: 14511)
LibDecimalFloatImplementationMinusTest:testMinusIsSubZero(int256,int256,int256) (runs: 5096, μ: 12931, ~: 12907)
LibDecimalFloatImplementationMulTest:testMul123456789987654321() (gas: 5559)
LibDecimalFloatImplementationMulTest:testMul123456789987654321WithExponents(int128,int128) (runs: 5096, μ: 15072, ~: 15160)
LibDecimalFloatImplementationMulTest:testMul1_3979_0_5() (gas: 6354)
LibDecimalFloatImplementationMulTest:testMul1e181e19() (gas: 5603)
LibDecimalFloatImplementationLog10Test:testExactLogs() (gas: 1255801)
LibDecimalFloatImplementationLog10Test:testExactLookupsLog10() (gas: 1300597)
LibDecimalFloatImplementationLog10Test:testInterpolatedLookups() (gas: 1254440)
LibDecimalFloatImplementationLog10Test:testLog10One() (gas: 1437604)
LibDecimalFloatImplementationLog10Test:testSub1() (gas: 1255463)
LibDecimalFloatImplementationLookupLogTableValTest:testLookupLogTableVal() (gas: 1338351)
LibDecimalFloatImplementationMaximizeTest:testMaximizedEverything(int256,int256) (runs: 5096, μ: 9460, ~: 9462)
LibDecimalFloatImplementationMaximizeTest:testMaximizedExamples() (gas: 131443)
LibDecimalFloatImplementationMaximizeTest:testMaximizedIdempotent(int256,int256) (runs: 5096, μ: 9661, ~: 9624)
LibDecimalFloatImplementationMaximizeTest:testMaximizedReference(int256,int256) (runs: 5096, μ: 12969, ~: 13856)
LibDecimalFloatImplementationMinusTest:testMinusIsSubZero(int256,int256,int256) (runs: 5096, μ: 12264, ~: 12242)
LibDecimalFloatImplementationMulTest:testMul123456789987654321() (gas: 1741)
LibDecimalFloatImplementationMulTest:testMul123456789987654321WithExponents(int128,int128) (runs: 5096, μ: 13755, ~: 13844)
LibDecimalFloatImplementationMulTest:testMul1_3979_0_5() (gas: 2536)
LibDecimalFloatImplementationMulTest:testMul1e181e19() (gas: 1785)
LibDecimalFloatImplementationMulTest:testMulGasOne() (gas: 1470)
LibDecimalFloatImplementationMulTest:testMulGasZero() (gas: 325)
LibDecimalFloatImplementationMulTest:testMulMaxSignedCoefficient() (gas: 6674)
LibDecimalFloatImplementationMulTest:testMulNegativeOne() (gas: 5660)
LibDecimalFloatImplementationMulTest:testMulNegativeOneOne() (gas: 5717)
LibDecimalFloatImplementationMulTest:testMulNotRevertAnyExpectation(int256,int256,int256,int256) (runs: 5096, μ: 15322, ~: 14638)
LibDecimalFloatImplementationMulTest:testMulOneNegativeOne() (gas: 5693)
LibDecimalFloatImplementationMulTest:testMulOneOne() (gas: 5582)
LibDecimalFloatImplementationMulTest:testMulOneZero() (gas: 4481)
LibDecimalFloatImplementationMulTest:testMulZero0Exponent() (gas: 4503)
LibDecimalFloatImplementationMulTest:testMulZeroAnyExponent(int64,int64) (runs: 5096, μ: 4704, ~: 4704)
LibDecimalFloatImplementationMulTest:testMulZeroOne() (gas: 4438)
LibDecimalFloatImplementationPow10Test:testExactLookupsPow10() (gas: 1287338)
LibDecimalFloatImplementationPow10Test:testExactPows() (gas: 1258404)
LibDecimalFloatImplementationPow10Test:testInterpolatedLookupsPower() (gas: 1290173)
LibDecimalFloatImplementationPow10Test:testNoRevert(int224,int32) (runs: 3637, μ: 1256004, ~: 1253800)
LibDecimalFloatImplementationPow10Test:testPow10One() (gas: 1563766)
LibDecimalFloatImplementationSubTest:testSubIsAdd(int256,int256,int256,int256) (runs: 5079, μ: 17124, ~: 17237)
LibDecimalFloatImplementationSubTest:testSubMinSignedValue(int256,int256,int256) (runs: 5096, μ: 15937, ~: 15910)
LibDecimalFloatImplementationSubTest:testSubOneFromMax() (gas: 7308)
LibDecimalFloatImplementationSubTest:testSubSelf(int224,int32) (runs: 5096, μ: 6210, ~: 6369)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedAB(uint256,uint256,uint256,int256) (runs: 5096, μ: 10020, ~: 9946)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedABOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 11502, ~: 11491)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBA(uint256,uint256,uint256,int256) (runs: 5069, μ: 11501, ~: 11489)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBAOverflow(uint256,uint256,int256) (runs: 5096, μ: 9143, ~: 9090)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegative(uint256,uint256,uint256,int256) (runs: 5096, μ: 9970, ~: 9892)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegativeOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 11366, ~: 11351)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositive(uint256,uint256,uint256,int256) (runs: 5096, μ: 9104, ~: 9033)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositiveOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 11255, ~: 11247)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentExamples() (gas: 13427)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentOverflowRescaleRevert(int256,int256,int256) (runs: 1766, μ: 14447, ~: 14443)
LibDecimalFloatImplementationMulTest:testMulMaxSignedCoefficient() (gas: 2856)
LibDecimalFloatImplementationMulTest:testMulNegativeOne() (gas: 1842)
LibDecimalFloatImplementationMulTest:testMulNegativeOneOne() (gas: 1899)
LibDecimalFloatImplementationMulTest:testMulNotRevertAnyExpectation(int256,int256,int256,int256) (runs: 5096, μ: 14653, ~: 13970)
LibDecimalFloatImplementationMulTest:testMulOneNegativeOne() (gas: 1875)
LibDecimalFloatImplementationMulTest:testMulOneOne() (gas: 1764)
LibDecimalFloatImplementationMulTest:testMulOneZero() (gas: 663)
LibDecimalFloatImplementationMulTest:testMulZero0Exponent() (gas: 685)
LibDecimalFloatImplementationMulTest:testMulZeroAnyExponent(int64,int64) (runs: 5096, μ: 886, ~: 886)
LibDecimalFloatImplementationMulTest:testMulZeroOne() (gas: 620)
LibDecimalFloatImplementationPow10Test:testExactLookupsPow10() (gas: 1269211)
LibDecimalFloatImplementationPow10Test:testExactPows() (gas: 1249378)
LibDecimalFloatImplementationPow10Test:testInterpolatedLookupsPower() (gas: 1283747)
LibDecimalFloatImplementationPow10Test:testNoRevert(int224,int32) (runs: 3634, μ: 1255875, ~: 1253800)
LibDecimalFloatImplementationPow10Test:testPow10One() (gas: 1461134)
LibDecimalFloatImplementationSubTest:testSubIsAdd(int256,int256,int256,int256) (runs: 5081, μ: 16460, ~: 16576)
LibDecimalFloatImplementationSubTest:testSubMinSignedValue(int256,int256,int256) (runs: 5096, μ: 15265, ~: 15241)
LibDecimalFloatImplementationSubTest:testSubOneFromMax() (gas: 3353)
LibDecimalFloatImplementationSubTest:testSubSelf(int224,int32) (runs: 5096, μ: 2972, ~: 3131)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedAB(uint256,uint256,uint256,int256) (runs: 5096, μ: 6209, ~: 6135)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedABOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 10192, ~: 10180)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBA(uint256,uint256,uint256,int256) (runs: 5069, μ: 10190, ~: 10178)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyMixedBAOverflow(uint256,uint256,int256) (runs: 5096, μ: 5348, ~: 5295)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegative(uint256,uint256,uint256,int256) (runs: 5096, μ: 6159, ~: 6081)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyNegativeOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 10055, ~: 10040)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositive(uint256,uint256,uint256,int256) (runs: 5096, μ: 5900, ~: 5829)
LibDecimalFloatImplementationUnabsUnsignedMulOrDivLossyTest:testUnabsUnsignedMulOrDivLossyPositiveOverflow(uint256,uint256,uint256,int256) (runs: 5069, μ: 9944, ~: 9936)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentExamples() (gas: 4409)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentOverflowRescaleRevert(int256,int256,int256) (runs: 1760, μ: 14450, ~: 14443)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerExponentVeryLargeDiffRevert(int256,int256,int256) (runs: 5096, μ: 13322, ~: 13562)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentLargerTargetExponentNoRevert(int256,int256,int256) (runs: 5096, μ: 11677, ~: 11740)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentMaxOverflow(int256) (runs: 5096, μ: 3769, ~: 3769)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSameExponentNoop(int256,int256) (runs: 5096, μ: 3721, ~: 3721)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleDown(int256,int256,int256) (runs: 5096, μ: 12964, ~: 12925)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentMaxOverflow(int256) (runs: 5096, μ: 601, ~: 601)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSameExponentNoop(int256,int256) (runs: 5096, μ: 553, ~: 553)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleDown(int256,int256,int256) (runs: 5096, μ: 12298, ~: 12259)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpLargeDiffRevert(int256,int256,int256) (runs: 5096, μ: 13499, ~: 13803)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpNotOverflow(int256,int256,int256) (runs: 3354, μ: 13494, ~: 13431)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpOverflow(int256,int256,int256) (runs: 1742, μ: 14130, ~: 14155)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSmallerExponentNoRevert(int256,int256,int256) (runs: 3330, μ: 13863, ~: 13668)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentTargetMoreThan76Larger(int256,int256,int256) (runs: 5096, μ: 12443, ~: 12552)
LibDecimalFloatInvTest:testInvMem(bytes32) (runs: 5096, μ: 11277, ~: 11334)
LibDecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 3899, ~: 3899)
LibDecimalFloatIsZeroTest:testIsZeroEqZero(bytes32) (runs: 5096, μ: 3527, ~: 3527)
LibDecimalFloatIsZeroTest:testIsZeroExamples(int32) (runs: 5096, μ: 4467, ~: 4467)
LibDecimalFloatIsZeroTest:testNotIsZero(int224,int32) (runs: 5039, μ: 3922, ~: 3922)
LibDecimalFloatLog10Test:testLog10Packed(bytes32) (runs: 5096, μ: 1652377, ~: 1270929)
LibDecimalFloatLtTest:testLtExamples() (gas: 4015)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpNotOverflow(int256,int256,int256) (runs: 3337, μ: 12828, ~: 12765)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentScaleUpOverflow(int256,int256,int256) (runs: 1759, μ: 14128, ~: 14155)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentSmallerExponentNoRevert(int256,int256,int256) (runs: 3336, μ: 13196, ~: 13002)
LibDecimalFloatImplementationWithTargetExponentTest:testWithTargetExponentTargetMoreThan76Larger(int256,int256,int256) (runs: 5096, μ: 11777, ~: 11886)
LibDecimalFloatInvTest:testInvMem(bytes32) (runs: 5096, μ: 8128, ~: 8166)
LibDecimalFloatIsZeroTest:testIsZeroDeployed(bytes32) (runs: 5096, μ: 1068, ~: 1068)
LibDecimalFloatIsZeroTest:testIsZeroEqZero(bytes32) (runs: 5096, μ: 690, ~: 690)
LibDecimalFloatIsZeroTest:testIsZeroExamples(int32) (runs: 5096, μ: 992, ~: 992)
LibDecimalFloatIsZeroTest:testNotIsZero(int224,int32) (runs: 5039, μ: 3600, ~: 3600)
LibDecimalFloatLog10Test:testLog10Packed(bytes32) (runs: 5096, μ: 1651741, ~: 1267848)
LibDecimalFloatLtTest:testLtExamples() (gas: 1178)
LibDecimalFloatLtTest:testLtGasAZero() (gas: 967)
LibDecimalFloatLtTest:testLtGasBZero() (gas: 1033)
LibDecimalFloatLtTest:testLtGasBothZero() (gas: 959)
LibDecimalFloatLtTest:testLtGasDifferentSigns() (gas: 1021)
LibDecimalFloatLtTest:testLtGasExponentDiffOverflow() (gas: 1105)
LibDecimalFloatLtTest:testLtNegativeVsPositive(int256,int32,int256,int32) (runs: 5096, μ: 13806, ~: 13645)
LibDecimalFloatLtTest:testLtNegativeVsZero(int256,int32,int32) (runs: 5096, μ: 10813, ~: 11029)
LibDecimalFloatLtTest:testLtOneEAny(int224,int32) (runs: 5096, μ: 3930, ~: 3931)
LibDecimalFloatLtTest:testLtReference(bytes32,bytes32) (runs: 5096, μ: 4654, ~: 4998)
LibDecimalFloatLtTest:testLtVsEqualVsGt(bytes32,bytes32) (runs: 5096, μ: 4326, ~: 4210)
LibDecimalFloatLtTest:testLtX(int224) (runs: 5096, μ: 3823, ~: 3824)
LibDecimalFloatLtTest:testLtXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 10605, ~: 10349)
LibDecimalFloatLtTest:testLtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 11209, ~: 11411)
LibDecimalFloatLtTest:testLtZero(int32,int32) (runs: 5096, μ: 4161, ~: 4161)
LibDecimalFloatLtTest:testLtNegativeVsPositive(int256,int32,int256,int32) (runs: 5096, μ: 13157, ~: 12997)
LibDecimalFloatLtTest:testLtNegativeVsZero(int256,int32,int32) (runs: 5096, μ: 10166, ~: 10382)
LibDecimalFloatLtTest:testLtOneEAny(int224,int32) (runs: 5096, μ: 1099, ~: 1100)
LibDecimalFloatLtTest:testLtReference(bytes32,bytes32) (runs: 5096, μ: 1819, ~: 2161)
LibDecimalFloatLtTest:testLtVsEqualVsGt(bytes32,bytes32) (runs: 5096, μ: 1489, ~: 1373)
LibDecimalFloatLtTest:testLtX(int224) (runs: 5096, μ: 992, ~: 993)
LibDecimalFloatLtTest:testLtXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9946, ~: 9692)
LibDecimalFloatLtTest:testLtXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10553, ~: 10755)
LibDecimalFloatLtTest:testLtZero(int32,int32) (runs: 5096, μ: 1330, ~: 1330)
LibDecimalFloatLteTest:testLteGasAZero() (gas: 1018)
LibDecimalFloatLteTest:testLteGasBZero() (gas: 1020)
LibDecimalFloatLteTest:testLteGasBothZero() (gas: 748)
LibDecimalFloatLteTest:testLteGasDifferentSigns() (gas: 1028)
LibDecimalFloatLteTest:testLteGasExponentDiffOverflow() (gas: 1134)
LibDecimalFloatLteTest:testLteOneEAny(bytes32) (runs: 5096, μ: 3493, ~: 3493)
LibDecimalFloatLteTest:testLteReference(int224,int32,int224,int32) (runs: 5096, μ: 8206, ~: 6615)
LibDecimalFloatLteTest:testLteX(int224,int32) (runs: 5096, μ: 3929, ~: 3930)
LibDecimalFloatLteTest:testLteXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 10624, ~: 10373)
LibDecimalFloatLteTest:testLteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 11234, ~: 11435)
LibDecimalFloatLteTest:testLteXNotLtY(bytes32,bytes32) (runs: 5096, μ: 3884, ~: 3807)
LibDecimalFloatLteTest:testLteXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 13145, ~: 12983)
LibDecimalFloatLteTest:testLteXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9587, ~: 9212)
LibDecimalFloatLteTest:testLteZero(int32,int32) (runs: 5096, μ: 4806, ~: 4806)
LibDecimalFloatMaxTest:testMaxX(bytes32) (runs: 5096, μ: 4246, ~: 4246)
LibDecimalFloatMaxTest:testMaxXY(bytes32,bytes32) (runs: 5096, μ: 4691, ~: 4613)
LibDecimalFloatMaxTest:testMaxXYEqual(bytes32) (runs: 5096, μ: 5272, ~: 5272)
LibDecimalFloatMaxTest:testMaxXYGreater(bytes32,bytes32) (runs: 2538, μ: 6132, ~: 6016)
LibDecimalFloatMaxTest:testMaxXYLess(bytes32,bytes32) (runs: 2553, μ: 6146, ~: 6027)
LibDecimalFloatMinTest:testMinX(bytes32) (runs: 5096, μ: 4268, ~: 4268)
LibDecimalFloatMinTest:testMinXY(bytes32,bytes32) (runs: 5096, μ: 4691, ~: 4613)
LibDecimalFloatMinTest:testMinXYEqual(bytes32) (runs: 5096, μ: 5292, ~: 5292)
LibDecimalFloatMinTest:testMinXYGreater(bytes32,bytes32) (runs: 2543, μ: 6079, ~: 5961)
LibDecimalFloatMinTest:testMinXYLess(bytes32,bytes32) (runs: 2548, μ: 6090, ~: 5972)
LibDecimalFloatMinusTest:testMinusPacked(bytes32) (runs: 5096, μ: 5606, ~: 5607)
LibDecimalFloatMixedTest:testDiv1Over3Mixed() (gas: 11766)
LibDecimalFloatMulTest:testMulPacked(bytes32,bytes32) (runs: 5096, μ: 9793, ~: 10566)
LibDecimalFloatLteTest:testLteOneEAny(bytes32) (runs: 5096, μ: 662, ~: 662)
LibDecimalFloatLteTest:testLteReference(int224,int32,int224,int32) (runs: 5096, μ: 5365, ~: 3778)
LibDecimalFloatLteTest:testLteX(int224,int32) (runs: 5096, μ: 1098, ~: 1099)
LibDecimalFloatLteTest:testLteXEAnyVsXEAny(int256,int32,int32) (runs: 5096, μ: 9959, ~: 9704)
LibDecimalFloatLteTest:testLteXEAnyVsXEAnyNegative(int256,int32,int32) (runs: 5096, μ: 10566, ~: 10767)
LibDecimalFloatLteTest:testLteXNotLtY(bytes32,bytes32) (runs: 5096, μ: 1047, ~: 970)
LibDecimalFloatLteTest:testLteXPositiveYNegative(int256,int32,int256,int32) (runs: 5096, μ: 12795, ~: 12633)
LibDecimalFloatLteTest:testLteXPositiveYZero(int256,int32,int32) (runs: 5096, μ: 9253, ~: 8878)
LibDecimalFloatLteTest:testLteZero(int32,int32) (runs: 5096, μ: 1653, ~: 1653)
LibDecimalFloatMaxTest:testMaxX(bytes32) (runs: 5096, μ: 1114, ~: 1114)
LibDecimalFloatMaxTest:testMaxXY(bytes32,bytes32) (runs: 5096, μ: 1559, ~: 1481)
LibDecimalFloatMaxTest:testMaxXYEqual(bytes32) (runs: 5096, μ: 1523, ~: 1523)
LibDecimalFloatMaxTest:testMaxXYGreater(bytes32,bytes32) (runs: 2538, μ: 4883, ~: 4767)
LibDecimalFloatMaxTest:testMaxXYLess(bytes32,bytes32) (runs: 2553, μ: 4897, ~: 4778)
LibDecimalFloatMinTest:testMinX(bytes32) (runs: 5096, μ: 1136, ~: 1136)
LibDecimalFloatMinTest:testMinXY(bytes32,bytes32) (runs: 5096, μ: 1559, ~: 1481)
LibDecimalFloatMinTest:testMinXYEqual(bytes32) (runs: 5096, μ: 1543, ~: 1543)
LibDecimalFloatMinTest:testMinXYGreater(bytes32,bytes32) (runs: 2543, μ: 4830, ~: 4712)
LibDecimalFloatMinTest:testMinXYLess(bytes32,bytes32) (runs: 2548, μ: 4841, ~: 4723)
LibDecimalFloatMinusTest:testMinusPacked(bytes32) (runs: 5096, μ: 2438, ~: 2439)
LibDecimalFloatMixedTest:testDiv1Over3Mixed() (gas: 7330)
LibDecimalFloatMulTest:testMulPacked(bytes32,bytes32) (runs: 5096, μ: 6867, ~: 7464)
LibDecimalFloatPackTest:testPackExponentOverflow(int256,int256) (runs: 5046, μ: 11085, ~: 11267)
LibDecimalFloatPackTest:testPackNegativeExponentLossyZero(int256,int256) (runs: 5046, μ: 11957, ~: 12110)
LibDecimalFloatPackTest:testPackZero(int256) (runs: 5096, μ: 4469, ~: 4469)
LibDecimalFloatPackTest:testPartsRoundTrip(int224,int32) (runs: 5096, μ: 5484, ~: 5485)
LibDecimalFloatPow10Test:testPow10Packed(bytes32) (runs: 5096, μ: 1642228, ~: 1254685)
LibDecimalFloatPowTest:testNegativePowError(bytes32,bytes32) (runs: 5052, μ: 1241606, ~: 1241724)
LibDecimalFloatPowTest:testPowAZero(int32,bytes32) (runs: 3539, μ: 1240754, ~: 1240754)
LibDecimalFloatPowTest:testPowAZeroNegative(bytes32) (runs: 1617, μ: 1241138, ~: 1241138)
LibDecimalFloatPowTest:testPowBOne(bytes32) (runs: 5065, μ: 1545718, ~: 1545688)
LibDecimalFloatPowTest:testPowBZero(bytes32,int32) (runs: 5096, μ: 1240322, ~: 1240322)
LibDecimalFloatPowTest:testPows() (gas: 1697700)
LibDecimalFloatPowTest:testRoundTripFuzzPow(bytes32,bytes32) (runs: 5096, μ: 1292479, ~: 1262284)
LibDecimalFloatPowTest:testRoundTripSimple() (gas: 1881282)
LibDecimalFloatSqrtTest:testRoundTripFuzzSqrt(int224,int32) (runs: 5097, μ: 1303876, ~: 1306645)
LibDecimalFloatSqrtTest:testSqrt() (gas: 1304251)
LibDecimalFloatSqrtTest:testSqrtNegative(bytes32) (runs: 5069, μ: 1241319, ~: 1241437)
LibDecimalFloatSqrtTest:testSqrtRoundTrip() (gas: 1522878)
LibDecimalFloatSubTest:testSubPacked(bytes32,bytes32) (runs: 5096, μ: 12228, ~: 12283)
LibFormatDecimalFloatCountSigFigs:testCountSigFigsExamples() (gas: 83596)
LibFormatDecimalFloatCountSigFigs:testCountSigFigsOne(int256) (runs: 5096, μ: 31877, ~: 31719)
LibFormatDecimalFloatCountSigFigs:testCountSigFigsZero(int256) (runs: 5096, μ: 3764, ~: 3764)
LibDecimalFloatPackTest:testPackNegativeExponentLossyZero(int256,int256) (runs: 5046, μ: 10654, ~: 10808)
LibDecimalFloatPackTest:testPackZero(int256) (runs: 5096, μ: 662, ~: 662)
LibDecimalFloatPackTest:testPartsRoundTrip(int224,int32) (runs: 5096, μ: 1027, ~: 1028)
LibDecimalFloatPow10Test:testPow10Packed(bytes32) (runs: 5096, μ: 1638452, ~: 1251517)
LibDecimalFloatPowTest:testNegativePowError(bytes32,bytes32) (runs: 5046, μ: 1241606, ~: 1241724)
LibDecimalFloatPowTest:testPowAZero(int32,bytes32) (runs: 3534, μ: 1240095, ~: 1240095)
LibDecimalFloatPowTest:testPowAZeroNegative(bytes32) (runs: 1615, μ: 1241138, ~: 1241138)
LibDecimalFloatPowTest:testPowBOne(bytes32) (runs: 5062, μ: 1457268, ~: 1457239)
LibDecimalFloatPowTest:testPowBZero(bytes32,int32) (runs: 5096, μ: 1237163, ~: 1237163)
LibDecimalFloatPowTest:testPows() (gas: 1680872)
LibDecimalFloatPowTest:testRoundTripFuzzPow(bytes32,bytes32) (runs: 5096, μ: 1291554, ~: 1262280)
LibDecimalFloatPowTest:testRoundTripSimple() (gas: 1873010)
LibDecimalFloatSqrtTest:testRoundTripFuzzSqrt(int224,int32) (runs: 5096, μ: 1303312, ~: 1306128)
LibDecimalFloatSqrtTest:testSqrt() (gas: 1296518)
LibDecimalFloatSqrtTest:testSqrtNegative(bytes32) (runs: 5065, μ: 1241318, ~: 1241437)
LibDecimalFloatSqrtTest:testSqrtRoundTrip() (gas: 1515240)
LibDecimalFloatSubTest:testSubPacked(bytes32,bytes32) (runs: 5096, μ: 9411, ~: 9461)
LibFormatDecimalFloatCountSigFigs:testCountSigFigsExamples() (gas: 48089)
LibFormatDecimalFloatCountSigFigs:testCountSigFigsOne(int256) (runs: 5096, μ: 30221, ~: 30196)
LibFormatDecimalFloatCountSigFigs:testCountSigFigsZero(int256) (runs: 5096, μ: 526, ~: 526)
LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalExamples() (gas: 792935)
LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripExamples() (gas: 793404)
LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNegative(int256,bool) (runs: 5096, μ: 66724, ~: 65001)
LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNonNegative(uint256,bool) (runs: 5096, μ: 49144, ~: 50845)
LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripExamples() (gas: 729004)
LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNegative(int256,bool) (runs: 5096, μ: 65290, ~: 63712)
LibFormatDecimalFloatToDecimalStringTest:testFormatDecimalRoundTripNonNegative(uint256,bool) (runs: 5096, μ: 47951, ~: 49556)
LibLogTableBytesTest:testToBytesAntiLogTableDec() (gas: 158047)
LibLogTableBytesTest:testToBytesAntiLogTableDecSmall() (gas: 160663)
LibLogTableBytesTest:testToBytesLogTableDec() (gas: 141790)
LibLogTableBytesTest:testToBytesLogTableDecSmall() (gas: 144156)
LibLogTableBytesTest:testToBytesLogTableDecSmallAlt() (gas: 18375)
LibParseDecimalFloatTest:testParseDecimalFloatEmpty() (gas: 4173)
LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert() (gas: 4169)
LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert2() (gas: 5336)
LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert3() (gas: 5444)
LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert4() (gas: 4147)
LibParseDecimalFloatTest:testParseDecimalFloatNonDecimal() (gas: 4145)
LibParseDecimalFloatTest:testParseFormatterRoundTripBug0() (gas: 27193)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDecimals() (gas: 381180)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 4166)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 4167)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 4145)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert2() (gas: 4167)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert3() (gas: 5140)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatEDot() (gas: 4168)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert5() (gas: 4176)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert6() (gas: 4166)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponents() (gas: 402701)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatFuzz(uint256,uint8,bool) (runs: 5096, μ: 45905, ~: 37134)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatLeadingZeros() (gas: 59757)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 6000)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeFrac() (gas: 5115)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 27808)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 24984)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatSpecific() (gas: 22959)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatUnrelated() (gas: 51251)
LibParseDecimalFloatTest:testParsePacked(string) (runs: 5096, μ: 9811, ~: 9692)
TestDecimalFloatUnpackTest:testUnpackDeployed(bytes32) (runs: 5096, μ: 169646, ~: 169646)
LibParseDecimalFloatTest:testParseDecimalFloatEmpty() (gas: 992)
LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert() (gas: 985)
LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert2() (gas: 2155)
LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert3() (gas: 2263)
LibParseDecimalFloatTest:testParseDecimalFloatExponentRevert4() (gas: 963)
LibParseDecimalFloatTest:testParseDecimalFloatNonDecimal() (gas: 961)
LibParseDecimalFloatTest:testParseFormatterRoundTripBug0() (gas: 23326)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDecimals() (gas: 328316)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 982)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 983)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 961)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert2() (gas: 983)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert3() (gas: 1959)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatEDot() (gas: 984)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert5() (gas: 992)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert6() (gas: 982)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatExponents() (gas: 321256)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatFuzz(uint256,uint8,bool) (runs: 5096, μ: 42435, ~: 33401)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatLeadingZeros() (gas: 47723)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 2819)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeFrac() (gas: 1934)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 24627)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 21803)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatSpecific() (gas: 12287)
LibParseDecimalFloatTest:testParseLiteralDecimalFloatUnrelated() (gas: 35135)
LibParseDecimalFloatTest:testParsePacked(string) (runs: 5096, μ: 5342, ~: 5223)
TestDecimalFloatUnpackTest:testUnpackDeployed(bytes32) (runs: 5096, μ: 166485, ~: 166485)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

LGTM: data-only snapshot refresh. Please pin toolchain for reproducibility.

Looks like a pure .gas-snapshot update. Before merge:

  • Pin Foundry, solc, optimizer runs, EVM version, and fuzz runs so CI reproduces numbers exactly (e.g., set FOUNDRY_FUZZ_RUNS and solc_version in foundry.toml/CI).
  • Fill in PR Motivation/Solution and tick the checklist for traceability.

If CI is green and toolchain is pinned, I’m good with this. Based on learnings.

🤖 Prompt for AI Agents
In .gas-snapshot around lines 1 to 345, this is a data-only snapshot update;
before merging pin the toolchain and CI variables to make numbers reproducible:
set solc_version, optimizer runs, and evm_version in foundry.toml (and/or CI),
export FOUNDRY_FUZZ_RUNS (and any other Foundry env vars) in the CI job so fuzz
runs are fixed, re-run CI to verify snapshots match, and update the PR
description to include a short Motivation and Solution and check the
release/verification checklist for traceability.

@@ -1 +1 @@
Subproject commit 769792d577a7ecae954a7cdd64a222b8d6fe450d
Subproject commit 00734d24d91db3fc4aac87c0a3c885de28449f96
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Complete the PR description and checklist before submitting for review.

The PR description contains only placeholder sections with no content explaining the motivation or solution. Additionally, all checklist items are unchecked, suggesting the developer has not completed their own verification process. The PR is labeled as an "audit" but provides no explanation of what audit or which issues motivated these submodule updates.

Required before merge:

  • Complete the "Motivation" section explaining what audit this addresses and why these submodule updates are needed
  • Complete the "Solution" section describing what changes are included in the updated submodules
  • Check off the appropriate checklist items (or explain why they don't apply)
  • Link any related issues or PRs that motivate these changes
🤖 Prompt for AI Agents
In lib/rain.sol.codegen around lines 1 to 1, the PR description and checklist
are placeholders and the audit label lacks context; update the PR body by
filling the "Motivation" section with which audit or issues prompted the
submodule updates and why they are needed, fill the "Solution" section
summarizing the concrete changes in the updated submodules, check the
appropriate checklist items or add justification for any that don't apply, and
add links to related issues/PRs so reviewers can verify scope and intent before
merging.

@thedavidmeister thedavidmeister merged commit 35b7b39 into main Oct 21, 2025
10 checks passed
@github-actions
Copy link

@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment:

S/M/L PR Classification Guidelines:

This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed.

Small (S)

Characteristics:

  • Simple bug fixes, typos, or minor refactoring
  • Single-purpose changes affecting 1-2 files
  • Documentation updates
  • Configuration tweaks
  • Changes that require minimal context to review

Review Effort: Would have taken 5-10 minutes

Examples:

  • Fix typo in variable name
  • Update README with new instructions
  • Adjust configuration values
  • Simple one-line bug fixes
  • Import statement cleanup

Medium (M)

Characteristics:

  • Feature additions or enhancements
  • Refactoring that touches multiple files but maintains existing behavior
  • Breaking changes with backward compatibility
  • Changes requiring some domain knowledge to review

Review Effort: Would have taken 15-30 minutes

Examples:

  • Add new feature or component
  • Refactor common utility functions
  • Update dependencies with minor breaking changes
  • Add new component with tests
  • Performance optimizations
  • More complex bug fixes

Large (L)

Characteristics:

  • Major feature implementations
  • Breaking changes or API redesigns
  • Complex refactoring across multiple modules
  • New architectural patterns or significant design changes
  • Changes requiring deep context and multiple review rounds

Review Effort: Would have taken 45+ minutes

Examples:

  • Complete new feature with frontend/backend changes
  • Protocol upgrades or breaking changes
  • Major architectural refactoring
  • Framework or technology upgrades

Additional Factors to Consider

When deciding between sizes, also consider:

  • Test coverage impact: More comprehensive test changes lean toward larger classification
  • Risk level: Changes to critical systems bump up a size category
  • Team familiarity: Novel patterns or technologies increase complexity

Notes:

  • the assessment must be for the totality of the PR, that means comparing the base branch to the last commit of the PR
  • the assessment output must be exactly one of: S, M or L (single-line comment) in format of: SIZE={S/M/L}
  • do not include any additional text, only the size classification
  • your assessment comment must not include tips or additional sections
  • do NOT tag me or anyone else on your comment

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 21, 2025

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get comprehensive diff statistics for the PR
git diff --stat origin/main...HEAD

# Get total line changes
git diff --shortstat origin/main...HEAD

# Check the actual content changes in non-submodule files
echo "=== REUSE.toml changes ==="
git diff origin/main...HEAD -- REUSE.toml | head -20

echo "=== Gas snapshot line count ==="
git diff origin/main...HEAD -- .gas-snapshot | wc -l

Length of output: 224


🏁 Script executed:

#!/bin/bash
# Try different git comparison approaches
echo "=== Current branch ==="
git branch

echo "=== All branches ==="
git branch -a

echo "=== Compare with main directly ==="
git diff main...HEAD --stat 2>&1 || git diff main HEAD --stat 2>&1

echo "=== Get shortstat ==="
git diff main...HEAD --shortstat 2>&1 || git diff main HEAD --shortstat 2>&1

echo "=== REUSE.toml changes ==="
git diff main HEAD -- REUSE.toml 2>&1 | head -30

echo "=== Gas snapshot changes ==="
git diff main HEAD -- .gas-snapshot 2>&1 | wc -l

Length of output: 333


🏁 Script executed:

#!/bin/bash
# Check current commit and main
echo "=== Current commit ==="
git log --oneline -1

echo "=== Main branch commit ==="
git log --oneline -1 main

echo "=== Try direct two-dot diff ==="
git diff main..HEAD --stat

echo "=== Direct shortstat ==="
git diff main..HEAD --shortstat

echo "=== Check REUSE.toml ==="
git diff main..HEAD -- REUSE.toml

echo "=== Count gas snapshot lines ==="
git diff main..HEAD -- .gas-snapshot | wc -l

echo "=== List changed files ==="
git diff main..HEAD --name-only

Length of output: 274


🏁 Script executed:

#!/bin/bash
# PR has been merged, check the actual PR branch
echo "=== Fetch PR branch ==="
git fetch origin 2025-10-21-audit

echo "=== Check PR branch ==="
git log --oneline origin/2025-10-21-audit -5

echo "=== Compare base main to PR branch ==="
# Find the merge base
git merge-base origin/main origin/2025-10-21-audit

echo "=== Get the parent of merge commit ==="
git log --oneline origin/main -5

echo "=== Find commits before merge ==="
git log --oneline --first-parent origin/main -10

echo "=== Check the actual merge commit ==="
git show --stat 35b7b39

Length of output: 9131


SIZE=L

@coderabbitai coderabbitai bot mentioned this pull request Dec 1, 2025
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants