Skip to content

Symbolic Bit Vectors#763

Open
ssoelvsten wants to merge 35 commits into
mainfrom
bvec
Open

Symbolic Bit Vectors#763
ssoelvsten wants to merge 35 commits into
mainfrom
bvec

Conversation

@ssoelvsten

Copy link
Copy Markdown
Owner

First major step towards #436 . This work was done by Palle H. Petersen (@pallehpetersen) on their fork with a little bit of a clean-up by me.

@ssoelvsten ssoelvsten self-assigned this Jun 24, 2026
@ssoelvsten ssoelvsten added the ✨ feature New operation or other feature label Jun 24, 2026
@codecov

codecov Bot commented Jun 24, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 78.91156% with 31 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.681%. Comparing base (74a9378) to head (db3135e).

Files with missing lines Patch % Lines
src/adiar/bvec.cpp 77.037% 31 Missing ⚠️
Additional details and impacted files
@@              Coverage Diff              @@
##              main      #763       +/-   ##
=============================================
- Coverage   97.039%   96.681%   -0.358%     
=============================================
  Files           99       101        +2     
  Lines         7295      7442      +147     
=============================================
+ Hits          7079      7195      +116     
- Misses         216       247       +31     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (12-Queens)

'ssoelvsten/adiar/bvec' is a change in performance of -0.39% (stdev: 0.31%).

... origin/main ssoelvsten/adiar/bvec
Mean 11149.33 11192.33
Standard Deviation 34.43 24.03

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (Picotrav 'arbiter')

'ssoelvsten/adiar/bvec' is a change in performance of 0.58% (stdev: 0.48%).

... origin/main ssoelvsten/adiar/bvec
Mean 41447.33 41206.67
Standard Deviation 160.03 196.31

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (QBF 'httt/4x4_9_tippy_bwnib')

'ssoelvsten/adiar/bvec' is a change in performance of 0.28% (stdev: 0.60%).

... origin/main ssoelvsten/adiar/bvec
Mean 8875.33 8850.67
Standard Deviation 53.59 2.08

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (QBF 'connect4/6x6_11_connect4_bwnib')

'ssoelvsten/adiar/bvec' is a change in performance of 0.57% (stdev: 1.52%).

... origin/main ssoelvsten/adiar/bvec
Mean 11637.67 11571.33
Standard Deviation 177.27 83.34

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (QBF 'breakthrough_dual/3x6_10_bwnib')

'ssoelvsten/adiar/bvec' is a change in performance of -0.72% (stdev: 1.18%).

... origin/main ssoelvsten/adiar/bvec
Mean 5072.67 5109.33
Standard Deviation 51.73 60.35

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (QBF 'breakthrough/3x4_19_bwnib')

'ssoelvsten/adiar/bvec' is a change in performance of -0.37% (stdev: 0.36%).

... origin/main ssoelvsten/adiar/bvec
Mean 21051.00 21128.67
Standard Deviation 63.66 77.05

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (Picotrav 'adder')

'ssoelvsten/adiar/bvec' is a change in performance of 0.34% (stdev: 3.14%).

... origin/main ssoelvsten/adiar/bvec
Mean 12068.67 12027.67
Standard Deviation 289.61 377.11

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (QBF 'domineering/5x5_13_bwnib')

'ssoelvsten/adiar/bvec' is a change in performance of -0.13% (stdev: 0.36%).

... origin/main ssoelvsten/adiar/bvec
Mean 14437.00 14456.00
Standard Deviation 52.26 46.87

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (QBF 'ep_dual/8x8_6_e-8-1_p-2-3_bwnib')

'ssoelvsten/adiar/bvec' is a change in performance of 2.24% (stdev: 4.71%).

... origin/main ssoelvsten/adiar/bvec
Mean 4472.67 4372.33
Standard Deviation 210.62 64.17

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (QBF 'hex/hein_08_5x5-11_bwnib')

'ssoelvsten/adiar/bvec' is a change in performance of -0.31% (stdev: 0.69%).

... origin/main ssoelvsten/adiar/bvec
Mean 17365.33 17419.67
Standard Deviation 120.17 80.00

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (QBF 'ep/8x8_7_e-8-1_p-3-4_bwnib')

'ssoelvsten/adiar/bvec' is a change in performance of -0.52% (stdev: 1.00%).

... origin/main ssoelvsten/adiar/bvec
Mean 29747.00 29900.33
Standard Deviation 147.18 299.39

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (14-Queens)

'ssoelvsten/adiar/bvec' is a change in performance of 0.60% (stdev: 1.35%).

... origin/main ssoelvsten/adiar/bvec
Mean 259363.67 257798.33
Standard Deviation 3505.56 1085.36

Number of samples: 3

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

🟡 Regression Test (Picotrav 'mem_ctrl')

'ssoelvsten/adiar/bvec' is a change in performance of -0.03% (stdev: 0.37%).

... origin/main ssoelvsten/adiar/bvec
Mean 354061.00 354154.00
Standard Deviation 1298.85 788.58

Number of samples: 3

While the other thing was cool, we have multiple issues:

- It seems more likely, that the end user wants to do a `bvec x = 42`
  than to specify the bit length as `bvec x(32)`. If anything, we
  should investigate whether one can move the `bitlen` into a template
  parameter.

- By changing the above, we have an implicit conversion of constants
  to bit vectors. This removes the need to have `template <typename
  Integer>` overloads for each operator.

- To make this not have any unforseen consequences, the bit length
  derived is as conservative as possible, i.e. it is only the number
  of bits needed to represent the number.

  Alternatively, we could have set the bit length to its default size
  which is used in other operations. Yet, if you do so then `x + 42`
  where `x` is an 8-bit integer would suddenly be extended to 64 by
  mistake.

- To make sure that the default is both 0 and makes all operations
  have no side-effects, its length is also 0.
This also fixes the issue that 'bvec_sub' does not properly deal with
variable length bit vectors.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ feature New operation or other feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants