Skip to documentation
SLOP

tiny.pluck.bdd.WmcParams

Reference tiny.pluck bdd WmcParams

Defined in bdd.

API (11)

Actions

Public operations.

Fields and members

Public fields and members.

No direct callersNo direct callsbddWmcParams
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/pluck/src/bdd.zig:2169

zig
pub const WmcParams = struct {    allocator: Allocator,    num_partials: usize,    weights: std.ArrayListUnmanaged(VarWeight),    dual_weights: std.ArrayListUnmanaged(VarWeightDual),    is_dual: bool,    pub fn init(allocator: Allocator) WmcParams {        return WmcParams{            .allocator = allocator,            .num_partials = 0,            .weights = std.ArrayListUnmanaged(VarWeight).empty,            .dual_weights = std.ArrayListUnmanaged(VarWeightDual).empty,            .is_dual = false,        };    }    pub fn initDual(allocator: Allocator, num_partials: usize) WmcParams {        return WmcParams{            .allocator = allocator,            .num_partials = num_partials,            .weights = std.ArrayListUnmanaged(VarWeight).empty,            .dual_weights = std.ArrayListUnmanaged(VarWeightDual).empty,            .is_dual = true,        };    }    pub fn deinit(self: *WmcParams) void {        self.weights.deinit(self.allocator);        for (self.dual_weights.items) |*dw| {            self.allocator.free(dw.low_partials);            self.allocator.free(dw.high_partials);        }        self.dual_weights.deinit(self.allocator);    }    fn ensureCapacity(self: *WmcParams, variable: VarLabel) !void {        const needed = variable + 1;        while (self.weights.items.len < needed) {            try self.weights.append(self.allocator, VarWeight{ .low = 1.0, .high = 1.0 });        }    }    fn ensureCapacityDual(self: *WmcParams, variable: VarLabel) !void {        const needed = variable + 1;        while (self.dual_weights.items.len < needed) {            const low_partials = try self.allocator.alloc(f64, self.num_partials);            @memset(low_partials, 0.0);            const high_partials = try self.allocator.alloc(f64, self.num_partials);            @memset(high_partials, 0.0);            try self.dual_weights.append(self.allocator, VarWeightDual{                .low = 1.0,                .low_partials = low_partials,                .high = 1.0,                .high_partials = high_partials,            });        }    }    pub fn setWeight(self: *WmcParams, variable: VarLabel, low: f64, high: f64) !void {        try self.ensureCapacity(variable);        self.weights.items[variable] = VarWeight{ .low = low, .high = high };        if (self.is_dual) {            try self.ensureCapacityDual(variable);            self.dual_weights.items[variable].low = low;            self.dual_weights.items[variable].high = high;            @memset(self.dual_weights.items[variable].low_partials, 0.0);            @memset(self.dual_weights.items[variable].high_partials, 0.0);        }    }    pub fn setWeightDeriv(        self: *WmcParams,        variable: VarLabel,        low: f64,        low_partials: []const f64,        high: f64,        high_partials: []const f64,    ) !void {        std.debug.assert(self.is_dual);        std.debug.assert(low_partials.len == self.num_partials);        std.debug.assert(high_partials.len == self.num_partials);        try self.ensureCapacity(variable);        self.weights.items[variable] = VarWeight{ .low = low, .high = high };        try self.ensureCapacityDual(variable);        self.dual_weights.items[variable].low = low;        self.dual_weights.items[variable].high = high;        @memcpy(self.dual_weights.items[variable].low_partials, low_partials);        @memcpy(self.dual_weights.items[variable].high_partials, high_partials);    }    pub fn getWeight(self: *const WmcParams, variable: VarLabel) VarWeight {        if (variable >= self.weights.items.len) {            return VarWeight{ .low = 1.0, .high = 1.0 };        }        return self.weights.items[variable];    }    fn getDualWeight(self: *const WmcParams, variable: VarLabel) ?VarWeightDual {        if (!self.is_dual or variable >= self.dual_weights.items.len) {            return null;        }        return self.dual_weights.items[variable];    }};
Called byCallsNo direct callstest sourcelib.pluck.src.bddtest: CNF benchmark - 3-SAT clausetest sourcelib.pluck.src.bddtest: WmcContext - basic caching corr...test sourcelib.pluck.src.bddtest: WmcContext - cache invalidation...test sourcelib.pluck.src.bddtest: WmcContext - cache size and tri...test sourcelib.pluck.src.bddtest: WmcContext - clear resets every...+49 morebdd.WmcParamsdeinit
Static calls · unresolved targets: 1 · external targets: 1.
Called byCallsNo direct callstest sourcelib.pluck.src.bddtest: CNF benchmark - 3-SAT clausetest sourcelib.pluck.src.bddtest: WmcContext - basic caching corr...test sourcelib.pluck.src.bddtest: WmcContext - cache invalidation...test sourcelib.pluck.src.bddtest: WmcContext - cache size and tri...test sourcelib.pluck.src.bddtest: WmcContext - clear resets every...+50 morebdd.WmcParamsinit
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.pluck.src.bddtest: finite difference derivative va...test sourcelib.pluck.src.bddtest: finite difference derivative va...test sourcelib.pluck.src.bddtest: finite difference derivative va...test sourcelib.pluck.src.bddtest: wmc dual - basic gradienttest sourcelib.pluck.src.bddtest: wmc dual - negation+4 morebdd.WmcParamsinitDual
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.pluck.src.bddtest: CNF benchmark - 3-SAT clausetest sourcelib.pluck.src.bddtest: WmcContext - basic caching corr...test sourcelib.pluck.src.bddtest: WmcContext - cache invalidation...test sourcelib.pluck.src.bddtest: WmcContext - cache size and tri...test sourcelib.pluck.src.bddtest: WmcContext - clear resets every...+46 moreprivate sourcelib.pluck.src.bdd.WmcParamsensureCapacityprivate sourcelib.pluck.src.bdd.WmcParamsensureCapacityDualbdd.WmcParamssetWeight
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.pluck.src.bdd.WmcParamsensureCapacityprivate sourcelib.pluck.src.bdd.WmcParamsensureCapacityDualbdd.WmcParamssetWeightDeriv
Static calls · unresolved targets: 0 · external targets: 0.

Complete caller list for bdd.WmcParams.deinit

54 direct callers.

Complete caller list for bdd.WmcParams.init

55 direct callers.

Complete caller list for bdd.WmcParams.initDual

9 direct callers.

Complete caller list for bdd.WmcParams.setWeight

51 direct callers.

Audit

Definitions7
Public names7
Members5
Version26.7.0
Revisiondaab053ee433