Skip to content

Commit

Permalink
Fix typos in NormalDistribution and ExponentialDistribution
Browse files Browse the repository at this point in the history
Also add more code examples to the `NormalDistribution` documentation.
  • Loading branch information
Lucca-mito committed Aug 13, 2024
1 parent aa04869 commit 290c017
Show file tree
Hide file tree
Showing 311 changed files with 344 additions and 321 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MAKEFLAGS += --silent

# Builds the project twice. Invoke by just typing make.
# Invoke by just running `make`. Note that this builds the project twice.
generate-and-preview-docs: generate-docs preview-docs

# Build the documentation website and write it to the docs directory. For this build, SwiftPM is sandboxed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,18 @@ extension ExponentialDistribution: ProbabilityDistribution {
public var isSymmetric: Bool { false }

/// The cumulative distribution function of the exponential distribution.
public func probability(ofAtMost RealType: RealType) -> RealType {
1 - .exp(-rate * RealType)
public func probability(ofAtMost value: RealType) -> RealType {
1 - .exp(-rate * value)
}
}

extension ExponentialDistribution: ContinuousDistribution {
/// The probability density function of the exponential distribution.
public func probabilityDensity(at RealType: RealType) -> RealType {
if RealType >= 0 {
return rate * .exp(-rate * RealType)
public func probabilityDensity(at value: RealType) -> RealType {
if value >= 0 {
rate * .exp(-rate * value)
} else {
return 0
0
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import RealModule
/// [normal distribution]: https://en.wikipedia.org/wiki/Normal_distribution
public struct NormalDistribution<RealType> where RealType: Real & ExpressibleByFloatLiteral {
/// The ``DistributionWithMean/mean`` of the normal distribution.
///
/// ## Example
/// ```swift
/// let normal = NormalDistribution.standard
Expand All @@ -20,6 +21,12 @@ public struct NormalDistribution<RealType> where RealType: Real & ExpressibleByF
public let mean: RealType

/// The ``DistributionWithVariance/variance`` of the normal distribution.
///
/// ## Example
/// ```swift
/// let normal = NormalDistribution(mean: 70, standardDeviation: 3)
/// print(normal.variance) // 9.0
/// ```
public let variance: RealType

// NormalDistribution conforms to DistributionWithVariance via DistributionWithMoments (see
Expand All @@ -33,10 +40,21 @@ public struct NormalDistribution<RealType> where RealType: Real & ExpressibleByF
// NormalDistribution overrides the default (computed) implementation of standardDeviation with
// this stored property:
/// The standard deviation of the normal distribution.
///
/// ## Example
/// ```swift
/// let normal = NormalDistribution(mean: 70, variance: 9)
/// print(normal.standardDeviation) // 3.0
/// ```
public let standardDeviation: RealType

/// Creates a normal distribution with the given mean and variance.
///
/// - Parameters:
/// - domain: The floating-point type used for values from, and statistics of, this distribution. Defaults to `Double.self` if omitted.
/// - mean: The ``mean`` or _expected value_ of the normal distribution, commonly denoted by 𝜇.
/// - variance: The ``variance`` of the normal distribution, commonly denoted by 𝜎².
///
/// - Precondition: `variance` > 0
///
/// > See also: ``init(over:mean:standardDeviation:)``
Expand All @@ -54,6 +72,11 @@ public struct NormalDistribution<RealType> where RealType: Real & ExpressibleByF

/// Creates a normal distribution with the given mean and standard deviation.
///
/// - Parameters:
/// - domain: The floating-point type used for values from, and statistics of, this distribution. Defaults to `Double.self` if omitted.
/// - mean: The ``mean`` or _expected value_ of the normal distribution, commonly denoted by 𝜇.
/// - variance: The standard deviation of the normal distribution, commonly denoted by 𝜎.
///
/// - Precondition: `standardDeviation` > 0
///
/// > See also: ``init(over:mean:variance:)``
Expand Down Expand Up @@ -93,9 +116,9 @@ extension NormalDistribution: ProbabilityDistribution {
/// The cumulative distribution function of the normal distribution.
///
/// For the ``standard`` normal distribution, this function is usually denoted by Φ(𝑥).
public func probability(ofAtMost RealType: RealType) -> RealType {
public func probability(ofAtMost value: RealType) -> RealType {
.erfc(
(mean - RealType) /
(mean - value) /
(.sqrt(2) * standardDeviation)
) / 2
}
Expand All @@ -108,8 +131,8 @@ extension NormalDistribution: ContinuousDistribution {
/// The probability density function of the normal distribution.
///
/// For the ``standard`` normal distribution, this function is sometimes denoted by φ(𝑥).
public func probabilityDensity(at RealType: RealType) -> RealType {
let numerator: RealType = .exp(-.pow(RealType - mean, 2) / variance / 2)
public func probabilityDensity(at value: RealType) -> RealType {
let numerator: RealType = .exp(-.pow(value - mean, 2) / variance / 2)
let denominator: RealType = .sqrt(2 * variance * .pi)
return numerator / denominator
}
Expand Down Expand Up @@ -161,8 +184,8 @@ where
///
/// [Box-Muller transform]:https://en.wikipedia.org/wiki/Box–Muller_transform#Basic_form
public func sample() -> RealType {
let uniform1 = RealType.random(in: 0..<1)
let uniform2 = RealType.random(in: 0..<1)
let uniform1 = RealType.random(in: 0 ..< 1)
let uniform2 = RealType.random(in: 0 ..< 1)

let standardNormalVariate = RealType.sqrt(-2 * .log(uniform1)) * .cos(2 * .pi * uniform2)

Expand Down
2 changes: 1 addition & 1 deletion docs/data/documentation/science.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/data/documentation/science/bernoullidistribution.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/Science\/documentation\/Science\/BernoulliDistribution\/bottomOnePercent"},"kind":"symbol","sections":[],"metadata":{"roleHeading":"Instance Property","role":"symbol","modules":[{"relatedModules":["Science"],"name":"Swift Science"}],"externalID":"s:7Science18ClosedFormQuantilePAAs25ExpressibleByFloatLiteral9StatisticRpzrlE16bottomOnePercent5ValueQzvp::SYNTHESIZED::s:7Science21BernoulliDistributionV","symbolKind":"property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"bottomOnePercent"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:7Science23ProbabilityDistributionP5ValueQa","text":"Value"}],"extendedModule":"Science","title":"bottomOnePercent","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Statistic","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"ExpressibleByFloatLiteral","type":"codeVoice"},{"text":".","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"remoteSource":{"url":"https:\/\/github.com\/lucca-mito\/swift-science\/blob\/main\/Sources\/Science\/Statistics\/Probability%20Distribution%20Protocols\/ClosedFormQuantile.swift#L30","fileName":"ClosedFormQuantile.swift"}},"hierarchy":{"paths":[["doc:\/\/Science\/documentation\/Science","doc:\/\/Science\/documentation\/Science\/BernoulliDistribution","doc:\/\/Science\/documentation\/Science\/BernoulliDistribution\/ClosedFormQuantile-Implementations"]]},"abstract":[{"text":"A first percentile of the distribution.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"bottomOnePercent","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"identifier":"doc:\/\/Science\/documentation\/Science\/ProbabilityDistribution\/Value","kind":"typeIdentifier","text":"Value","preciseIdentifier":"s:7Science23ProbabilityDistributionP5ValueQa"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"content":[{"anchor":"discussion","type":"heading","level":2,"text":"Discussion"},{"inlineContent":[{"type":"text","text":"If there are multiple, the smallest is chosen."}],"type":"paragraph"}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/science\/bernoullidistribution\/bottomonepercent"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://Science/documentation/Science":{"url":"\/documentation\/science","identifier":"doc:\/\/Science\/documentation\/Science","images":[{"identifier":"swift-science-icon.png","type":"icon"}],"abstract":[{"text":"A scientific computing package for Swift.","type":"text"}],"type":"topic","title":"Swift Science","kind":"symbol","role":"collection"},"doc://Science/documentation/Science/BernoulliDistribution":{"abstract":[{"type":"text","text":"The probability distribution of a random variable that’s either 0 or 1."}],"kind":"symbol","title":"BernoulliDistribution","url":"\/documentation\/science\/bernoullidistribution","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"BernoulliDistribution"}],"identifier":"doc:\/\/Science\/documentation\/Science\/BernoulliDistribution","navigatorTitle":[{"text":"BernoulliDistribution","kind":"identifier"}],"type":"topic"},"doc://Science/documentation/Science/ProbabilityDistribution/Value":{"required":true,"identifier":"doc:\/\/Science\/documentation\/Science\/ProbabilityDistribution\/Value","title":"Value","type":"topic","role":"symbol","url":"\/documentation\/science\/probabilitydistribution\/value","fragments":[{"kind":"keyword","text":"associatedtype"},{"kind":"text","text":" "},{"text":"Value","kind":"identifier"},{"kind":"text","text":" : "},{"text":"Comparable","kind":"typeIdentifier","preciseIdentifier":"s:SL"}],"abstract":[{"text":"The type of values from the distribution.","type":"text"}],"kind":"symbol"},"swift-science-icon.png":{"identifier":"swift-science-icon.png","variants":[{"traits":["1x","light"],"url":"\/images\/swift-science-icon.png"}],"type":"image","alt":"A technology icon representing the Swift Science framework."},"doc://Science/documentation/Science/BernoulliDistribution/bottomOnePercent":{"identifier":"doc:\/\/Science\/documentation\/Science\/BernoulliDistribution\/bottomOnePercent","abstract":[{"text":"A first percentile of the distribution.","type":"text"}],"type":"topic","kind":"symbol","url":"\/documentation\/science\/bernoullidistribution\/bottomonepercent","title":"bottomOnePercent","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"bottomOnePercent","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Value","preciseIdentifier":"s:7Science23ProbabilityDistributionP5ValueQa"}],"conformance":{"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"type":"codeVoice","code":"Statistic"},{"text":" conforms to ","type":"text"},{"code":"ExpressibleByFloatLiteral","type":"codeVoice"},{"text":".","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}]},"role":"symbol"},"doc://Science/documentation/Science/BernoulliDistribution/ClosedFormQuantile-Implementations":{"kind":"article","title":"ClosedFormQuantile Implementations","type":"topic","url":"\/documentation\/science\/bernoullidistribution\/closedformquantile-implementations","abstract":[],"role":"collectionGroup","identifier":"doc:\/\/Science\/documentation\/Science\/BernoulliDistribution\/ClosedFormQuantile-Implementations"}}}
{"metadata":{"modules":[{"relatedModules":["Science"],"name":"Swift Science"}],"roleHeading":"Instance Property","externalID":"s:7Science18ClosedFormQuantilePAAs25ExpressibleByFloatLiteral9StatisticRpzrlE16bottomOnePercent5ValueQzvp::SYNTHESIZED::s:7Science21BernoulliDistributionV","role":"symbol","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"code":"Statistic","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"ExpressibleByFloatLiteral","type":"codeVoice"},{"type":"text","text":"."}]},"title":"bottomOnePercent","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"bottomOnePercent"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:7Science23ProbabilityDistributionP5ValueQa","kind":"typeIdentifier","text":"Value"}],"symbolKind":"property","extendedModule":"Science","remoteSource":{"fileName":"ClosedFormQuantile.swift","url":"https:\/\/github.com\/lucca-mito\/swift-science\/blob\/main\/Sources\/Science\/Statistics\/Probability%20Distribution%20Protocols\/ClosedFormQuantile.swift#L30"}},"sections":[],"hierarchy":{"paths":[["doc:\/\/Science\/documentation\/Science","doc:\/\/Science\/documentation\/Science\/BernoulliDistribution","doc:\/\/Science\/documentation\/Science\/BernoulliDistribution\/ClosedFormQuantile-Implementations"]]},"variants":[{"paths":["\/documentation\/science\/bernoullidistribution\/bottomonepercent"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","abstract":[{"text":"A first percentile of the distribution.","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"bottomOnePercent","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"identifier":"doc:\/\/Science\/documentation\/Science\/ProbabilityDistribution\/Value","text":"Value","kind":"typeIdentifier","preciseIdentifier":"s:7Science23ProbabilityDistributionP5ValueQa"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"platforms":["macOS"]}]},{"content":[{"type":"heading","anchor":"discussion","text":"Discussion","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"If there are multiple, the smallest is chosen."}]}],"kind":"content"}],"identifier":{"url":"doc:\/\/Science\/documentation\/Science\/BernoulliDistribution\/bottomOnePercent","interfaceLanguage":"swift"},"references":{"doc://Science/documentation/Science/BernoulliDistribution/ClosedFormQuantile-Implementations":{"abstract":[],"kind":"article","type":"topic","identifier":"doc:\/\/Science\/documentation\/Science\/BernoulliDistribution\/ClosedFormQuantile-Implementations","url":"\/documentation\/science\/bernoullidistribution\/closedformquantile-implementations","title":"ClosedFormQuantile Implementations","role":"collectionGroup"},"doc://Science/documentation/Science":{"title":"Swift Science","type":"topic","abstract":[{"type":"text","text":"A scientific computing package for Swift."}],"identifier":"doc:\/\/Science\/documentation\/Science","role":"collection","images":[{"identifier":"swift-science-icon.png","type":"icon"}],"url":"\/documentation\/science","kind":"symbol"},"doc://Science/documentation/Science/ProbabilityDistribution/Value":{"required":true,"title":"Value","url":"\/documentation\/science\/probabilitydistribution\/value","abstract":[{"type":"text","text":"The type of values from the distribution."}],"role":"symbol","kind":"symbol","type":"topic","identifier":"doc:\/\/Science\/documentation\/Science\/ProbabilityDistribution\/Value","fragments":[{"text":"associatedtype","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Value"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:SL","text":"Comparable","kind":"typeIdentifier"}]},"swift-science-icon.png":{"variants":[{"url":"\/images\/swift-science-icon.png","traits":["1x","light"]}],"alt":"A technology icon representing the Swift Science framework.","type":"image","identifier":"swift-science-icon.png"},"doc://Science/documentation/Science/BernoulliDistribution/bottomOnePercent":{"type":"topic","identifier":"doc:\/\/Science\/documentation\/Science\/BernoulliDistribution\/bottomOnePercent","abstract":[{"type":"text","text":"A first percentile of the distribution."}],"title":"bottomOnePercent","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"bottomOnePercent","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Value","kind":"typeIdentifier","preciseIdentifier":"s:7Science23ProbabilityDistributionP5ValueQa"}],"kind":"symbol","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Statistic"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"ExpressibleByFloatLiteral"},{"type":"text","text":"."}]},"url":"\/documentation\/science\/bernoullidistribution\/bottomonepercent"},"doc://Science/documentation/Science/BernoulliDistribution":{"abstract":[{"type":"text","text":"The probability distribution of a random variable that’s either 0 or 1."}],"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"BernoulliDistribution"}],"url":"\/documentation\/science\/bernoullidistribution","kind":"symbol","identifier":"doc:\/\/Science\/documentation\/Science\/BernoulliDistribution","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"BernoulliDistribution","kind":"identifier"}],"title":"BernoulliDistribution"}}}
Loading

0 comments on commit 290c017

Please sign in to comment.