# shrinkage::GapSafeDatafit

Shrinkage for Rust · 0.3.0

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/screening.rs>)

```rust
pub trait GapSafeDatafit
```

Loss-side capability for original-loss Gap Safe certificates. 

<a id="methods"></a>

## Methods

<a id="method-dual_candidate"></a>

### `dual_candidate`

```rust
fn dual_candidate(
    &self,
    predictor: &[f64],
    output: &mut [f64]
) -> Result<(), FitError>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/screening.rs>)

Construct a domain-feasible candidate, including any intercept equality. 

<a id="method-dual_candidate-documentation-errors"></a>

#### Errors

Reject invalid dimensions, inputs, or nonfinite arithmetic. 

<a id="method-dual_objective"></a>

### `dual_objective`

```rust
fn dual_objective(&self, dual: &[f64]) -> Result<f64, FitError>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/screening.rs>)

Evaluate the dual objective, excluding penalty feasibility. 

<a id="method-dual_objective-documentation-errors"></a>

#### Errors

Reject a candidate outside the loss conjugate's domain. 

<a id="method-fenchel_gap"></a>

### `fenchel_gap`

```rust
fn fenchel_gap(&self, predictor: &[f64], dual: &[f64]) -> Result<f64, FitError>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/screening.rs>)

Evaluate the loss Fenchel gap without subtracting full objectives. 

This is `F(eta) + F_conjugate(-theta) + dot(eta, theta)`. 

<a id="method-fenchel_gap-documentation-errors"></a>

#### Errors

Reject incompatible dimensions, invalid domains, or nonfinite arithmetic. 

<a id="method-finalize_dual"></a>

### `finalize_dual`

```rust
fn finalize_dual(&self, dual: &mut [f64]) -> Result<(), FitError>
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/screening.rs>)

Repair domain and equality constraints after floating-point scaling. 

<a id="method-finalize_dual-documentation-errors"></a>

#### Errors

Reject invalid dimensions or arithmetic. A feasible zero fallback is valid. 

<a id="method-strong_concavity"></a>

### `strong_concavity`

```rust
fn strong_concavity(&self) -> f64
```

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/screening.rs>)

Positive strong-concavity constant on the observation scale. 

<a id="impl-1946891a12da57453c4f50794b3db1eee23f0526c40c61eea399f52f24c6351e"></a>

## [Implementation of GapSafeDatafit](<a202383d9c495adaa5bfeefa681ad6cd8e1646b68a1adadc85573a29f4a95bcc>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/datafit/binomial.rs>)

```rust
impl GapSafeDatafit for Binomial<'_>
```

<a id="impl-ac709de87d43487ec132119e57bc41a879a48c4ce457b3cea293fc0e98abd9a3"></a>

## [Implementation of GapSafeDatafit](<a202383d9c495adaa5bfeefa681ad6cd8e1646b68a1adadc85573a29f4a95bcc>)

[Source](<https://github.com/jolars/shrinkage/blob/eeafe449edce19d3c552a03060f681ae3891af74/src/datafit/gaussian.rs>)

```rust
impl GapSafeDatafit for Gaussian<'_>
```
