#include <bits/stdc++.h>
using namespace std;

int main(){
  double n,m,d,ans;
  cin >> n >> m >> d;
  ans=0;
  if(d != 0){
    for(int i=0;i<m-1;i++){
      ans+=(2*(n-d))/(n*n);
    }
  }
  else{
   for(int i=0;i<m-1;i++){
      ans+=(n-d)/(n*n);
    }
  }
  cout<<fixed<<setprecision(20)<<ans<<endl;

  return 0;
}

//#define _GLIBCXX_DEBUG
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using ld=long double;
using st=string;
using ch=char;
typedef pair<ll,ll> P;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<P> vP;
typedef vector<ch> vc;
typedef vector<vc> vvc;
#define FOR(i,a,b) for(ll i=a;i<b;i++)
#define rep(i,n) FOR(i,0,n)
#define ROF(i,a,b) for(ll i=a;i>=b;i--)
#define per(i,a) ROF(i,a,0)
#define pb push_back
#define mp make_pair
const ll MOD=1000000007;
const ll MOD2=998244353;
const ld PI=acos(-1);
const ll INF=1e18;
st abc="abcdefghijklmnopqrstuvwxyz";
st ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
struct edge{ll to,cost;};

int main() {
    ll n,m,d;
    cin >> n >> m >> d;
    cout << fixed << setprecision(20);
    if(d!=0){
        cout << (ld)(n-d)*2*(m-1)/(n*n) << endl;
    }
    else{
        cout << (ld)(n-d)*(m-1)/(n*n) << endl;
    }
}