Skip to content

Commit

Permalink
Added CBC solver installation step using apt-get
Browse files Browse the repository at this point in the history
  • Loading branch information
Myocardinal committed Aug 30, 2024
1 parent 23abbef commit 59692de
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 39 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/publish-pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ jobs:
build maturin
--user
- name: Install CBC Solver
run: sudo apt-get install -y coinor-cbc coinor-libcbc-dev

- name: Build with maturin
uses: PyO3/maturin-action@v1
with:
Expand Down
78 changes: 39 additions & 39 deletions src/language.rs
Original file line number Diff line number Diff line change
Expand Up @@ -521,45 +521,45 @@ pub fn rules<A: Analysis<TnsrLang>>() -> Vec<Rewrite<TnsrLang, TnsrAnalysis>> {
// rewrite!("div-mul-comm-r"; "(Div (Mul ?x ?y) ?z)" => "(Mul ?x (Div ?y ?z))"),
]}

// struct FMulApplier {
// foo: Var,
// bar: Var,
// }
//
// impl Applier<TnsrLang, TnsrAnalysis> for FMulApplier {
// fn apply_one(&self, egraph: &mut EGraph<TnsrLang, TnsrAnalysis>, matched_id: Id, subst: &Subst, _: Option<&PatternAst<TnsrLang>>, _: Symbol) -> Vec<Id> {
// let foo_scalar = egraph[subst[self.foo]].data.scalar;
// let bar_scalar = egraph[subst[self.bar]].data.scalar;
// let new_scalar = foo_scalar * bar_scalar;
// let new_var = egraph.add(TnsrLang::Var(new_scalar.to_string().into()));
// let new_node = egraph.add(TnsrLang::Input([new_var]));
// if egraph.union(new_node, matched_id) {
// vec![new_node, matched_id]
// } else {
// vec![]
// }
// }
// }
//
// struct FAddApplier {
// foo: Var,
// bar: Var,
// }
//
// impl Applier<TnsrLang, TnsrAnalysis> for FAddApplier {
// fn apply_one(&self, egraph: &mut EGraph<TnsrLang, TnsrAnalysis>, matched_id: Id, subst: &Subst, _: Option<&PatternAst<TnsrLang>>, _: Symbol) -> Vec<Id> {
// let foo_scalar = egraph[subst[self.foo]].data.scalar;
// let bar_scalar = egraph[subst[self.bar]].data.scalar;
// let new_scalar = foo_scalar + bar_scalar;
// let new_var = egraph.add(TnsrLang::Var(new_scalar.to_string().into()));
// let new_node = egraph.add(TnsrLang::Input([new_var]));
// if egraph.union(new_node, matched_id) {
// vec![new_node, matched_id]
// } else {
// vec![]
// }
// }
// }
struct FMulApplier {
foo: Var,
bar: Var,
}

impl Applier<TnsrLang, TnsrAnalysis> for FMulApplier {
fn apply_one(&self, egraph: &mut EGraph<TnsrLang, TnsrAnalysis>, matched_id: Id, subst: &Subst, _: Option<&PatternAst<TnsrLang>>, _: Symbol) -> Vec<Id> {
let foo_scalar = egraph[subst[self.foo]].data.scalar;
let bar_scalar = egraph[subst[self.bar]].data.scalar;
let new_scalar = foo_scalar * bar_scalar;
let new_var = egraph.add(TnsrLang::Var(new_scalar.to_string().into()));
let new_node = egraph.add(TnsrLang::Input([new_var]));
if egraph.union(new_node, matched_id) {
vec![new_node, matched_id]
} else {
vec![]
}
}
}

struct FAddApplier {
foo: Var,
bar: Var,
}

impl Applier<TnsrLang, TnsrAnalysis> for FAddApplier {
fn apply_one(&self, egraph: &mut EGraph<TnsrLang, TnsrAnalysis>, matched_id: Id, subst: &Subst, _: Option<&PatternAst<TnsrLang>>, _: Symbol) -> Vec<Id> {
let foo_scalar = egraph[subst[self.foo]].data.scalar;
let bar_scalar = egraph[subst[self.bar]].data.scalar;
let new_scalar = foo_scalar + bar_scalar;
let new_var = egraph.add(TnsrLang::Var(new_scalar.to_string().into()));
let new_node = egraph.add(TnsrLang::Input([new_var]));
if egraph.union(new_node, matched_id) {
vec![new_node, matched_id]
} else {
vec![]
}
}
}

pub struct TnsrCost<'a> {
pub egraph: &'a EGraph<TnsrLang, TnsrAnalysis>,
Expand Down
2 changes: 2 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#![allow(dead_code)]

pub mod language;
use egg::*;
use crate::language::*;
Expand Down

0 comments on commit 59692de

Please sign in to comment.